• ベストアンサー

エクセルマクロを使って、表を完成させたいのですが

お尋ねします。 ブックAのシート1には、下記のように数字が入っています。 それをもとに、ブックBのシート1に表を完成させたいのですが、どのようにすればいいでしょうか。 ブックBは、ブックAのA列の値がそれぞれいくつあるかを示したものです。 ブックA    A列 1行 2A  2行 1A 3行 1C 4行 4D 5行 5D 6行 1A ※行数はこれ以上ありますが、A列には、数字とアルファベットの  組み合わせで2桁で構成されています。 ※アルファベットはA~Dで、数字は1~5です。 ブックB    A列 B列 C列 D列 F列 1行  2      1  2行  1 3行  4行            1 5行               1 ※ブックAのA列の値からブックBにブックAの値が  それぞれ何個あるかを示したいのです。  よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

A列でソート 例データ 1A 1A 1C 2A 2C 3C 4D 4D 5D ーーー 全角文字で、1やAが入っているという前提で A-Zまでしかないという前提で (半角だともっとやりやすいが) 同一シートのD列以右に結果計数を出した。 ソート法はコードが他に比べ、簡単になるはず。 ーー Sub test02() d = Range("a65536").End(xlUp).Row 'MsgBox d m = Cells(2, "A") ct = 0 For i = 2 To d If Cells(i, "A") = m Then ct = ct + 1 Else '--計数セット r = Asc(Left(m, 1)) + 32177 c = Asc(Right(m, 1)) + 32161 Cells(r + 1, c + 3) = ct '-- ct = 0 ct = ct + 1 m = Cells(i, "A") End If Next i End Sub ーーー 結果 C2:G10 A B C D 1 2 - 1 - 2 1 - 1 - 3 - - 1 - 4 - - - 2 5 - - - -

89315
質問者

お礼

ありがとうございます。 皆様から頂きましたヒントを元に試しております。

その他の回答 (3)

回答No.4

回答番号:No.2です >※アルファベットはA~Dで、数字は1~5です。 見逃してました。っていうかF列って何? >   A列 B列 C列 D列 F列 × With Worksheets("Sheet2").Range("A1:E5") ○ With Worksheets("Sheet2").Range("A1:D5") 数式は × CHAR(9008+{1;2;3;4;5})&CHAR(9024+{1,2,3,4,5})) ○ CHAR(9008+{1;2;3;4;5})&CHAR(9024+{1,2,3,4}) さらに、当方の回答の Sheet1 → ブックA Sheet2が ブックB にあたります ブック間までは考えてませんでした。 # imogasiさん 最後の「5D」がカウントされていませんよ

89315
質問者

補足

度々ありがとうございます。 もう少し頑張ってみます!

回答No.2

Sub Macro2() Application.ScreenUpdating = False Dim n As Long n = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row '↓ ほとんど自動記録(^^; With Worksheets("Sheet2").Range("A1:E5") .FormulaArray = _ "=COUNTIF(Sheet1!R1C1:R" & n & "C1,CHAR(9008+{1;2;3;4;5})&CHAR(9024+{1,2,3,4,5}))" .Value = .Value .Replace What:="0", Replacement:="", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End With Application.ScreenUpdating = True End Sub ほとんど遊び(^^; 参考まで

89315
質問者

お礼

ありがとうございます。 只今悪戦苦闘で、一度やってみます。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

ご自分で作成するのであれば以下の手順で・・・ 0)準備:ブックBをクリアしておく 1)ブックAの1行分の処理をブックAのA列の行数だけ繰り返す構文を作成 <以下、1行分の処理(n行目)> 2)ブックAのn行目、A列の値を読む 3)2の文字を分解する(そのまま、行と列の指定に使用できる) 4)ブックBの3で得られた行列のセルの値を、+1する。 <ここまでを繰り返し>

89315
質問者

お礼

早速のご回答ありがとうございます。 一度試作してみます。

関連するQ&A