• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAで別シートへ情報を加工して移したい)

エクセルVBAで別シートへ情報を加工して移したい

このQ&Aのポイント
  • エクセルVBAを使用してAのシートからBのシートへ、特定の情報を抜き出して一覧表に加工したいです。
  • 現在、AのシートからBのシートへの情報の移動はできていますが、加工やクリアの処理について困っています。
  • Aシートには届いたメールの本文が入力されるため、その情報をBシートに加工して貼り付けたいです。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

ご提示の処理でBシートの1行目を挿入し、 IDや営業形態で1行目と2行目に書き出しという処理を なぜ必要なのか辻褄が合わないように思います。 ので、以下のように解釈しています。 (1)Bシートの1行目を挿入 (2)AシートのA列1行目~○行目(3行固定?)を加工 (3)行列を入替でBシートの1行目のA1、B1、C1セル・・・へ出力 間違っていたら申し訳ありません。 ただし、 エクセル2007では、Bシートの列数の最大が16384列までですので、 Aシートの行数が16384行までの場合に対応します。 ■VBAコード Private Sub CommandButton1_Click() '型宣言 Dim i As Long Dim myStr As String 'Bシートの1行目をシフトダウン Worksheets("Bシート").Range("1:1").Insert shift:=xlShiftDown 'AシートのA列末尾まで繰り返し処理 For i = 1 To Worksheets("Aシート").Cells(Rows.Count, "A").End(xlUp).Row   'AシートA列の値を変数に格納   myStr = Worksheets("Aシート").Cells(i, "A")   '変数から":"を検索して、右側を抜出して格納し直し   myStr = Right(myStr, Len(myStr) - InStr(1, myStr, ":"))   'Bシートの1行目に変数を出力   Worksheets("Bシート").Cells(1, i) = myStr Next i 'Aシートの値削除 With Worksheets("Aシート")   .Range(.Cells(1, "A"), .Cells(Rows.Count, "A").End(xlUp)).ClearContents End With End Sub ■追記 Right関数は「指定した文字列」を「指定した文字数」から「文字数」分だけ抜き出すため、 Len関数と組み合わせて使う必要がありますので、No1さんのコードでは求める結果にならないかと。

queschoooon
質問者

お礼

eden3616様 ありがとうございます。今、回答拝見させて頂きまして、 取り急ぎ御礼申し上げます。 あと、すみません!焦って書いていたため、ご指摘通り BシートのA1,B1,C1・・・と横に展開されるのが 正しいです。 お気づき頂きましてありがとうございます。 まだ試せてないのですが、できそうな感じがします! またご連絡させて頂きます。よろしくお願い致します。

その他の回答 (1)

  • usami33
  • ベストアンサー率36% (808/2210)
回答No.1

判りやすい様に、一行、位置処理で書いてます。 必ず10文字目以降なら 1 2 3 45 6 7 8 9 ご利用ID   :99 Dim str1 As String Dim str2 As String str1 = Application.Transpose(Worksheets("Aシート").Range("A1")) str2 = RightB(str1, 10) ' 10文字目から右を切り出す Worksheets("Bシート").Range("A1").Value = str2 「:」を探すなら Dim N As Long Dim str1 As String Dim str2 As String str1 = Application.Transpose(Worksheets("Aシート").Range("A1")) N = InStr(str1, ":") str2 = RightB(str1, N+1) ' 10文字目から右を切り出す Worksheets("Bシート").Range("A1").Value = str2

queschoooon
質問者

お礼

usami33様 ご回答ありがとうございます! 焦って書いていたためBシートへはA1,B1,C1と展開されるのが 正しかったのですが、改変すればできるかもしれないと 思いました。 まだ試せてないのですが、本当にありがたく、 心より御礼申し上げます。

関連するQ&A