こんなことは可能でしょうか?
A列にid、B列に「音楽」「スポーツ」「ファッション」といった文言が1〜複数個入力されているシートがあり、
1つのidで1行、3000行以上のデータがあります。
このデータをB列に入力された文言別に行を分けたいのですがこれをエクセル上で関数やマクロを用いて一括で実行することは可能でしょうか?
例として、
A1に「1」、A2に「音楽 スポーツ」
B1に「2」、B2に「ファッション」
C1に「3」、C2に「ファッション スポーツ」
D1に「4」、D2に「スポーツ ファッション 音楽」
と入っているデータを
A1に「1」、A2に「音楽」
2に「1」、B2に「スポーツ」
C1に「2」、C2に「ファッション」
D1に「3」、D2に「ファッション」
E1に「3」、E2に「スポーツ」
F1に「4」、F2に「スポーツ」
G1に「4」、G2に「ファッション」
H1に「4」、H2に「音楽」
という形にしたいです。
補足情報
使用ソフトはExcell for Mac 2011です。
B列に入力されている文言は全部で13種類。
B列に複数の文言が入力されている場合は改行されています。
当方エクセルはあまり詳しくないためできる限り詳細にお教えいただけると助かります。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんばんは!
VBAになりますが、一例です。
画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() '//この行から//
Dim j As Long, myAry, k As Long, myStr As String
For j = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
myStr = Replace(Cells(2, j), " ", " ")
If InStr(myStr, " ") > 0 Then
myAry = Split(myStr, " ")
Columns(j + UBound(myAry)).Insert
For k = 0 To UBound(myAry)
Cells(1, j + k) = Cells(1, j)
Cells(2, j + k) = myAry(k)
Next k
End If
Next j
ActiveSheet.Columns.AutoFit
End Sub '//この行まで//
※ 一旦マクロを実行すると元に戻せませんので、
別シートでマクロを試してみてください。m(_ _)m
ご回答ありがとうございます。
丁寧にご説明いただいたのに申し訳ありませんがマクロを実行してもシートに変化がありませんでした・・・
こちらの設定などの問題かもしれないのでもう少し試してみますね。
No.2
- 回答日時:
No.1です。
Mac版のExcelですね?
当方使用のWindows版のExcelではちゃんと動きました。
Mac版は使ったコトがないので、具体的にどこがどうダメなのか判りません。
サイトで検索してみると
Windows版とMac版の互換性はあまりないみたいですね。
直接の回答でなくてごめんなさい。m(_ _)m
Mac版です。
補足に実際のデータの一部を添付しました。
ちなみにwindowsにファイルを移してExcel2010でも試して見ましたがやはり動かなかったですね・・・
No.3
- 回答日時:
続けてお邪魔します。
質問文では
>A1に「1」、A2に「音楽 スポーツ」
>B1に「2」、B2に「ファッション」
>C1に「3」、C2に「ファッション スポーツ」
>D1に「4」、D2に「スポーツ ファッション 音楽」
となっていますね。
すなわち1行目がナンバーで2行目にスペースで区切られた文字列が入っている。
それを列方向に伸ばして1セルごとに表示する!
という意味にとれました。
補足の画像を拝見すると全く違いますね。
↓の画像の左側のデータを右側のように表示したい!という解釈をしました。
以下のマクロを実行してみてください。
Sub Sample2()
Dim i As Long, k As Long, myAry
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If InStr(Cells(i, "B"), vbLf) > 0 Then
myAry = Split(Cells(i, "B"), vbLf)
For k = 0 To UBound(myAry)
Cells(i, k + 2) = myAry(k)
Next k
End If
Next i
End Sub
これで画像のような感じになります。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) 【Excel】複数列ごとに取得するセルを変更したい 2 2023/03/23 21:04
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) エクセルの表で A1にデータの入力規則でリストを作って、 (リス、キリン、ゾウとします) リストを選 4 2022/07/15 09:29
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
ExcelのVBA。public変数の値が...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
サクラエディタ・マクロ → VSCo...
-
ExcelVBAでPDFを閉じるソース
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
エクセルに張り付けた写真のフ...
-
エクセルのマクロについて教え...
-
ユーザーフォームを起動しなが...
-
エクセルのマクロについて教え...
-
VBA アドインについて お詳しい...
-
VBA初心者 Ctrl+での操作、ボタ...
-
特定文字のある行の前に空白行...
-
2つのマクロでチェックボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報
実際のデータの一部を画像で補足します