!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が必須だとしたら、
使用しない行を予めオートフィルターで弾いて読み込む行自体を減らすのがいいと思う
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市早苗総理「金利上昇よりも日本の成長が大事」 ★2 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」 [冬月記者★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★2 [Hitzeschleier★]
- 小泉防衛相「危険回避のための十分な情報なかった」「問題の本質は30分にわたるレーダー照射」…中国側の音声公開を強く批判 [♪♪♪★]
- 【野球】止まらぬ野球人口減少に危機感 ラミレス氏「野球人口は激減、人気自体も下がっている」「もっと野球ができる環境を整えるべき」 [冬月記者★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★2 [少考さん★]
- 小泉防衛大臣「中国から通告はあったが具体的ではなかった」 [834922174]
- 【速報】共同通信スクープキタ━(゚∀゚)━!!「実際は日本の自衛隊機が中国機に対してレーダ照射ロックオンしていたことが発覚」 [339712612]
- 【高市悲報】漁師さん「ハタハタが豊漁になるように祈願した!」1匹しか獲れなかったと話題になる😰 [616817505]
- Vtuberラーメン70%オフwwwwwwwww
- 【悲報】タマキン「高市さんはようやっとる!撤回の必要なし!」高市「早くトランプに会いたい🤗」国会にて [359965264]
- 【悲報】銀、世界中で枯渇、一晩で16円値上りし未曾有の領域に入ってしまうwwwwwwwwwwwwwwwwwwww [802034645]
