!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part71
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f5f-nIK+)
2021/05/25(火) 12:48:01.06ID:mepUVc/i02デフォルトの名無しさん (ゲマー MM06-mK7O)
2021/05/25(火) 14:39:07.41ID:Eok9KjPbM ↑おつ
3デフォルトの名無しさん (アウウィフ FFc7-4Cki)
2021/05/25(火) 15:29:32.37ID:9esnpvbXF >紙の表を目で追いながら画面を見ずにどんどん入力するとか普通にある
下手に補完機能とか発動するとうざいよな
下手に補完機能とか発動するとうざいよな
4デフォルトの名無しさん (ワッチョイ 0eda-cE2x)
2021/05/26(水) 13:42:07.91ID:LJxSJ8rb0 時々画面も見たほうがいいぞ
5デフォルトの名無しさん (スプッッ Sd5a-r2gF)
2021/05/26(水) 18:56:30.36ID:mkbiTVsAd 画像のような処理をするコードを書きたいのですが・・・
整理番号に対してアルファベットがランダムに振られており、それをまとめるというようなコードです。
ただし、まとめたい整理番号は行が飛び飛びになっており固定されております。
forやifなどを少しかじっただけのため、頑張ってみましたが全くできませんでした。
何卒宜しくお願いいたします。
https://i.imgur.com/w5P4FX4.jpg
整理番号に対してアルファベットがランダムに振られており、それをまとめるというようなコードです。
ただし、まとめたい整理番号は行が飛び飛びになっており固定されております。
forやifなどを少しかじっただけのため、頑張ってみましたが全くできませんでした。
何卒宜しくお願いいたします。
https://i.imgur.com/w5P4FX4.jpg
6デフォルトの名無しさん (ワッチョイ 9a8e-/g3G)
2021/05/26(水) 19:27:52.83ID:DrPaJmjh0 いつものあいつ
7デフォルトの名無しさん (アウアウウー Sac7-qxUy)
2021/05/26(水) 20:40:38.47ID:YzhdN1Yma のんびりやろうぜ
8デフォルトの名無しさん (JP 0H7f-4P7j)
2021/05/26(水) 20:43:32.54ID:FIJmCPPEH >>5
法則がまったくわからん
法則がまったくわからん
9デフォルトの名無しさん (スプッッ Sd5a-r2gF)
2021/05/26(水) 20:57:38.79ID:mkbiTVsAd10デフォルトの名無しさん (ブーイモ MM26-ZtF8)
2021/05/26(水) 22:04:20.25ID:VymsA87rM ID:mkbiTVsAdはとにかく繊維質と水分を十分に摂って山ほどウンコしろ
そうすればこのスレを必要とする事も無くなるだろ
そうすればこのスレを必要とする事も無くなるだろ
11デフォルトの名無しさん (ワッチョイ 5b2c-5BAZ)
2021/05/26(水) 22:11:44.89ID:XGTO2klA0 入力データは違うけど、Ruby で作ってみた
require 'csv'
tmp_hash = { }
input_ary = CSV.read( "input.csv" ) # 2次元配列
input_ary.each do | row | # 1行ずつ処理する
if tmp_hash.has_key? row[ 0 ] # 既に、その数字が存在すれば
# 文字列が存在しない時だけ、その文字列を追加する
tmp_hash[ row[ 0 ] ][ row[ 1 ] ] = true unless
tmp_hash[ row[ 0 ] ].has_key? row[ 1 ]
else
tmp_hash[ row[ 0 ] ] = { row[ 1 ] => true }
end
end
result_ary = tmp_hash.map do |num, hash|
ary = hash.map { |str, b_true| str }
[ num, *ary ] # 配列展開
end
# p result_ary # 2次元配列
# [["1", "A"], ["2", "B", "C"], ["3", "X"]]
csv_str = result_ary.map( &:to_csv ).join # 2次元配列を、CSV 文字列に変換する
print csv_str
出力
1,A
2,B,C
3,X
require 'csv'
tmp_hash = { }
input_ary = CSV.read( "input.csv" ) # 2次元配列
input_ary.each do | row | # 1行ずつ処理する
if tmp_hash.has_key? row[ 0 ] # 既に、その数字が存在すれば
# 文字列が存在しない時だけ、その文字列を追加する
tmp_hash[ row[ 0 ] ][ row[ 1 ] ] = true unless
tmp_hash[ row[ 0 ] ].has_key? row[ 1 ]
else
tmp_hash[ row[ 0 ] ] = { row[ 1 ] => true }
end
end
result_ary = tmp_hash.map do |num, hash|
ary = hash.map { |str, b_true| str }
[ num, *ary ] # 配列展開
end
# p result_ary # 2次元配列
# [["1", "A"], ["2", "B", "C"], ["3", "X"]]
csv_str = result_ary.map( &:to_csv ).join # 2次元配列を、CSV 文字列に変換する
print csv_str
出力
1,A
2,B,C
3,X
12デフォルトの名無しさん (JP 0H7f-4P7j)
2021/05/26(水) 22:16:14.20ID:FIJmCPPEH13デフォルトの名無しさん (ワンミングク MM8a-ZbgT)
2021/05/26(水) 22:55:47.72ID:Ca/oJ0kCM いつものあいつ=ruby馬鹿
14デフォルトの名無しさん (ブーイモ MM26-AlZ6)
2021/05/26(水) 23:30:39.65ID:CbYT3Zs7M >>5
Dictioraryを使わずにデータを1列目〜2列目、出力先を4列目以降であると仮定する
配列 = Range(Cells(出力先の1番上の行,4),Cells(出力先の1番下の行,4))
For i = LBound(配列,1) to UBound(配列,1)
For j = データの一番上の行 to データの一番下の行
If Cells(j,1).Value = 配列(i,LBound(配列,2) Then
If 配列(i,UBound(配列,2) <>″″ Then
ReDim Preserve 配列(LBound(配列,1) to UBound(配列,1),LBound(配列,2) to UBound(配列,2)+1)
End If
For k = LBound(配列,2) to UBound(配列,2)
If 配列(i,k) = Cells(j,1),Value Then
Exit For
Else If 配列(i,k) = ″″ Then
配列(i,k) = Cells(j,1),Value
End If
Next
Next
Next
ってやって出力するとか?
思いつきで適当にやったから動かなかったらゴメンね
Dictioraryを使わずにデータを1列目〜2列目、出力先を4列目以降であると仮定する
配列 = Range(Cells(出力先の1番上の行,4),Cells(出力先の1番下の行,4))
For i = LBound(配列,1) to UBound(配列,1)
For j = データの一番上の行 to データの一番下の行
If Cells(j,1).Value = 配列(i,LBound(配列,2) Then
If 配列(i,UBound(配列,2) <>″″ Then
ReDim Preserve 配列(LBound(配列,1) to UBound(配列,1),LBound(配列,2) to UBound(配列,2)+1)
End If
For k = LBound(配列,2) to UBound(配列,2)
If 配列(i,k) = Cells(j,1),Value Then
Exit For
Else If 配列(i,k) = ″″ Then
配列(i,k) = Cells(j,1),Value
End If
Next
Next
Next
ってやって出力するとか?
思いつきで適当にやったから動かなかったらゴメンね
15デフォルトの名無しさん (スプッッ Sd5a-r2gF)
2021/05/27(木) 01:00:26.94ID:hl6lLSzud >>12
移動後の整理番号の位置は決まっているだけ という話なのですが... というかそれは書いてあるのですが
移動後の整理番号の位置は決まっているだけ という話なのですが... というかそれは書いてあるのですが
16デフォルトの名無しさん (スプッッ Sd5a-r2gF)
2021/05/27(木) 01:01:43.36ID:hl6lLSzud17デフォルトの名無しさん (ラクッペペ MMb6-9F53)
2021/05/27(木) 08:26:53.22ID:f+HvaIKyM >>5
ピボットテーブルでいいやん
ピボットテーブルでいいやん
18デフォルトの名無しさん (スプッッ Sd5a-r2gF)
2021/05/27(木) 11:03:53.72ID:hl6lLSzud19デフォルトの名無しさん (スプッッ Sdf3-FygT)
2021/05/28(金) 11:25:16.55ID:EVw9ke/Wd20デフォルトの名無しさん (ブーイモ MM75-fghp)
2021/05/28(金) 12:11:04.92ID:akPeanIUM21デフォルトの名無しさん (ワッチョイ 49cc-f5pr)
2021/05/28(金) 14:13:31.59ID:wSpOVLhu0 A列がKey、B列がItemが入っていたとして、一括でDictionaryに代入する方法はありますか
今はForで処理していますが、
For r = 1 To 10000
dic.Add Cells(r, 1), Cells(r, 2)
Next r
だと読み込みに時間がかかり、配列のほうが早いくらいです
今はForで処理していますが、
For r = 1 To 10000
dic.Add Cells(r, 1), Cells(r, 2)
Next r
だと読み込みに時間がかかり、配列のほうが早いくらいです
22デフォルトの名無しさん (ラクッペペ MM4b-hX9V)
2021/05/28(金) 15:04:21.04ID:TV0Jrg4dM どう頑張っても配列のほうが速いよ
23デフォルトの名無しさん (JP 0H75-B6Af)
2021/05/28(金) 16:57:29.10ID:VcGAYAhXH 配列を経由してDicに入れると多少は速くなると思う
確認はしてない
Sub Macro1()
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Dim aa()
aa = Range("A1:B10000")
For r = 1 To 10000
Dic.Add aa(r, 1), aa(r, 2)
Next
End Sub
確認はしてない
Sub Macro1()
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Dim aa()
aa = Range("A1:B10000")
For r = 1 To 10000
Dic.Add aa(r, 1), aa(r, 2)
Next
End Sub
24デフォルトの名無しさん (アウアウウー Sac5-togR)
2021/05/28(金) 17:29:35.83ID:ZW1biLGGa そもそもDictionaryにRange型も入れられるんじゃないっけ?
だから「配列の方が速い」という使い方ならCellsの後にValue付けなきゃいかんのでは
だから「配列の方が速い」という使い方ならCellsの後にValue付けなきゃいかんのでは
26デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/05/28(金) 18:55:00.91ID:dVrlPf17027デフォルトの名無しさん (ワッチョイ f101-2Cmt)
2021/05/29(土) 00:17:36.64ID:EOgZ8Zck0 >>24
それだと重複時に例外が出るメリットが生かせないのでは
配列でいいって言ってるから保証出来てるのかも知れないが
(最終的な目的次第では不要な可能性もあるけど)Dictionaryが必須だとしたら、
使用しない行を予めオートフィルターで弾いて読み込む行自体を減らすのがいいと思う
それだと重複時に例外が出るメリットが生かせないのでは
配列でいいって言ってるから保証出来てるのかも知れないが
(最終的な目的次第では不要な可能性もあるけど)Dictionaryが必須だとしたら、
使用しない行を予めオートフィルターで弾いて読み込む行自体を減らすのがいいと思う
28デフォルトの名無しさん (ゲマー MMa3-XUic)
2021/05/29(土) 09:21:11.45ID:u1rl2gESM >>23
配列を使うとセルへのアクセスが一万分の一なるね
配列を使うとセルへのアクセスが一万分の一なるね
29デフォルトの名無しさん (JP 0H75-B6Af)
2021/05/29(土) 12:21:19.40ID:tq3mFxPFH30デフォルトの名無しさん (JP 0H75-B6Af)
2021/05/29(土) 12:22:00.64ID:tq3mFxPFH >>28
2列あるから2万分の一だよ
2列あるから2万分の一だよ
31デフォルトの名無しさん (ワッチョイ 932f-0h5H)
2021/05/29(土) 17:06:38.14ID:7OwGsnto0 つかまずディクショナリに入れたいのはRange型なのかそのセルの値なのか
なんにしてもこの程度は一瞬で終わったけどな
なんにしてもこの程度は一瞬で終わったけどな
32デフォルトの名無しさん (ワッチョイ 9310-B6Af)
2021/05/29(土) 21:19:22.31ID:nUzcb4+O033デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/05/29(土) 22:40:30.37ID:hG567TCp0 >>32
あー、あるあるだね
その辺はSQLの書きっぷりで例えば
数値として判断させるならケツに*1くっつけるとか
文字列としてならケツにブランクくっつけてやることで何とかなるけど確かにあまり綺麗な形とは言い難いかもね。
あー、あるあるだね
その辺はSQLの書きっぷりで例えば
数値として判断させるならケツに*1くっつけるとか
文字列としてならケツにブランクくっつけてやることで何とかなるけど確かにあまり綺麗な形とは言い難いかもね。
34デフォルトの名無しさん (ワッチョイ 93ad-vEq5)
2021/05/29(土) 22:58:50.78ID:WsLgMeGM0 VBAのユーザーフォームについて、
プロパティウィンドウ上でフォントサイズを変更しようとした場合、
Fontの右側に出てくる[...]ボタンを押して、フォントウィンドウ上でサイズを選択するのが普通ですが、
ボタンを押すとなるとマウス操作が必要になります。
フォントサイズを変更する時に使えるキーボードのショートカットってないですか?
プロパティウィンドウ上でフォントサイズを変更しようとした場合、
Fontの右側に出てくる[...]ボタンを押して、フォントウィンドウ上でサイズを選択するのが普通ですが、
ボタンを押すとなるとマウス操作が必要になります。
フォントサイズを変更する時に使えるキーボードのショートカットってないですか?
35デフォルトの名無しさん (JP 0H75-B6Af)
2021/05/29(土) 23:27:11.67ID:tq3mFxPFH >>34
F4でプロパティウィンドウに移動、↓でフォントの行に飛んでからAlt+↓を押すとフォント選択ダイアログが開く
F4でプロパティウィンドウに移動、↓でフォントの行に飛んでからAlt+↓を押すとフォント選択ダイアログが開く
36デフォルトの名無しさん (ワッチョイ 93ad-vEq5)
2021/05/30(日) 00:06:02.75ID:mvwOdKaH0 Alt+↓では開きませんでした。
ForeColor等のように、右側に出るボタンが ▼ の項目については、
Alt+↓で選択候補がプルダウンで表示されました。
これは知らなかったので、一つ知識が増えました。ありがとうございます。
ForeColor等のように、右側に出るボタンが ▼ の項目については、
Alt+↓で選択候補がプルダウンで表示されました。
これは知らなかったので、一つ知識が増えました。ありがとうございます。
37デフォルトの名無しさん (ワッチョイ 518e-jepm)
2021/05/30(日) 00:29:48.27ID:WJGvMidO0 >>36
ただの馬鹿だろ
ただの馬鹿だろ
38デフォルトの名無しさん (ドコグロ MM6b-0vVr)
2021/05/30(日) 00:38:38.89ID:MeqMpkJCM 数が多いときはforで回してフォントサイズを変えた方が楽
39デフォルトの名無しさん (スフッ Sdb3-B6Af)
2021/05/30(日) 00:54:31.57ID:G4EUHehCd >>36
フォントが大量にインストールされてると、ダイアログが開くのに時間がかかる
ほかにも、PictureプロパティとかIconプロパティなんかの[...]ボタンもAlt+↓で押せるはずだから試してみて
それも開かないとなると、何かがおかしい
フォントが大量にインストールされてると、ダイアログが開くのに時間がかかる
ほかにも、PictureプロパティとかIconプロパティなんかの[...]ボタンもAlt+↓で押せるはずだから試してみて
それも開かないとなると、何かがおかしい
40デフォルトの名無しさん (ワッチョイ f101-950J)
2021/05/30(日) 03:54:35.99ID:wQMimd0a0 ところがLinuxなら一瞬で開きます。
41デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/05/30(日) 04:10:38.43ID:dB+xSga20 >>40
そういうことはubuntuでEXCELが使えるようになってから言おうね
そういうことはubuntuでEXCELが使えるようになってから言おうね
42デフォルトの名無しさん (ワッチョイ f101-950J)
2021/05/30(日) 04:22:57.14ID:wQMimd0a0 なんのために?
ベンダーロックインされてM$の奴隷になりたいの?
ベンダーロックインされてM$の奴隷になりたいの?
43デフォルトの名無しさん (ワッチョイ 934f-urWM)
2021/05/30(日) 08:12:15.17ID:dB+xSga20 >>42
やっぱりあわしろ教信者の荒らしか
こいつらとRuby信者はわざわざ自分の巣から出張して来て無関係のスレ荒らすから分かり易い
EXCELが動かなきゃEXCEL VBA動かすことが出来ないだろ?
お前が来ているこのスレの名前を100回読み返してみようか。そうすれば多少頭に血の巡りが悪くても少しは理解出来るだろ
やっぱりあわしろ教信者の荒らしか
こいつらとRuby信者はわざわざ自分の巣から出張して来て無関係のスレ荒らすから分かり易い
EXCELが動かなきゃEXCEL VBA動かすことが出来ないだろ?
お前が来ているこのスレの名前を100回読み返してみようか。そうすれば多少頭に血の巡りが悪くても少しは理解出来るだろ
■ このスレッドは過去ログ倉庫に格納されています
