ここから本文です

エクセルVBA/文字の結合について、ご教示頂きたく宜しくお願い致します。 【入...

pro********さん

2019/8/1522:33:34

エクセルVBA/文字の結合について、ご教示頂きたく宜しくお願い致します。

【入力内容】
1行目に項目が入力されております。

例)B1セル:項目1、C1セル:項目2、・・・H1セル:項目7※固定
1列目には、品目名が入力されております。
例)A2セル:品目①、A3セル:品目②、A4セル:品目③・・・※新品目随時追加
【処理内容】
VBAコピー等を使用して
元データから新規シートへの項目、品目名の入力まで実現し
次に品目名と項目を結合したく思います。
例)B2セル:品目①項目1、C2セル:品目①項目2・・・H2セル:品目①項目7
B3セル:品目②項目1、C3セル:品目②項目2・・・H3セル:品目②項目7
以下同様(品目数分あり)
計算式 B2=A2&B1、C2=A2&C1・・・H2=A2&H1
B3=A3&B1、C3=A3&C1・・・H3=A3&H1
以下同様(品目数分必要)

品目数は随時追加予定ありとなります。

こちらをVBAで実現するには
どのようなプロシージャを作成したら、よろしいでしょうか?
なお、(文字結合は処理時間がかかるとのこと)高速処理を希望しております。

書籍、ホームページ等調べてみたのですが、よく分からず困っております。

ご教示頂けると大変光栄でございます。


宜しくお願い致します。

閲覧数:
19
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2019/8/1523:01:57

解りやすいのは↓

Sub sample1()
Application.ScreenUpdating = False
With Range("H2", Cells(Rows.Count, 1).End(xlUp).Offset(, 1))
.Formula = "=$A2&B$1"
.Value = .Value
End With
Application.ScreenUpdating = True
End Sub

↑の処理速度に不満なら↓

Sub sample()
Dim xA, x1, xT, APP
Set APP = Application
APP.ScreenUpdating = False
xA = APP.Transpose(Range("A2", Cells(Rows.Count, 1).End(xlUp)))
x1 = APP.Transpose(APP.Transpose(Range("B1:H1")))
ReDim xT(LBound(xA) To UBound(xA), LBound(x1) To UBound(x1))
For i = LBound(xA) To UBound(xA)
For ii = LBound(x1) To UBound(x1)
xT(i, ii) = xA(i) & x1(ii)
Next ii
Next i
Range("B2").Resize(UBound(xA), UBound(x1)) = xT
APP.ScreenUpdating = True
End Sub

質問した人からのコメント

2019/8/16 09:30:55

 ご教示頂いたプロシージャにて、処理ができました。

 同じ処理でも何通りもの方法があり、奥の深さを痛感しております。
 (どれが最適な処理方法なのか判断がとても難しく思います)

 最終的には処理の速さかなと、初心者の自分はまず基本から
 学んでいきたいと思います。
 又何かありましたら、ご教示頂けると幸いでございます。

 誠にありがとうございました。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる