表データの中身を次のように整形したいと思っています。
-----------
整形前の状態
------------
A B C D
1 太郎 次郎 花子 三郎
2 次郎 花子
3 太郎 三郎
4 花子
この状態のデータでも使えなくはないのですが、「太郎」はA列にまとめ、「次郎」はB列にまとめ、「花子」はC列にまとめ、「三郎」はD列にまとめておきたいと思います。
具体的には、下記のような形です。
-----------
整形後の状態
------------
A B C D
1 太郎 次郎 花子 三郎
2 次郎 花子
3 太郎 三郎
4 花子
この整形作業をなるべく簡単に行いたいのですが、どのような方法が考えられるでしょうか。
countif関数などで、強引にやるような非効率なやり方なら思いついたのですが、もうちょっと簡単な方法がありそうなので、質問させていただきました。
ツールとしては、基本的にはExcelを使うことを想定していますが、簡単に使えるツールが他になにかあればExcelにこだわるという意志はないです。
基本的な質問で恐縮ですが、よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは
>countif関数などで、強引にやるような非効率なやり方なら思いついたのですが~~
関数で行う方法は、私には思いつけませんでした。
関数でできるのなら、その方が修正も可能でしょうからそちらの方が良さそうに思います。
多分、一度だけの作業でしょうから、効率はあまり関係ないのではないでしょうか。
私に思いつけるのは、マクロを利用する方法ですが、以下はご参考までに。
値は右詰めで入力されているものと仮定をして、A列の最終行までを対象に処理をします。
(処理の都合上で、一旦、列を挿入し、処理終了後にその列を削除しています)
※ 元のデータにそのまま上書きしますので、もし試す場合は、コピーしてから試してください。
Sub Sample()
Dim dic As Object, ary
Dim rw As Long, col As Long
Dim i As Long, v As String
Set dic = CreateObject("Scripting.Dictionary")
Columns(1).Insert
For rw = 1 To Cells(Rows.Count, 2).End(xlUp).Row
col = Cells(rw, Columns.Count).End(xlToLeft).Column
If col > 1 Then
ary = Cells(rw, 1).Resize(1, col).Value
Rows(rw).ClearContents
For i = 2 To UBound(ary, 2)
v = Trim(ary(1, i))
If v <> "" Then
If Not dic.exists(v) Then dic.Add v, dic.Count + 2
Cells(rw, dic.Item(v)).Value = v
End If
Next i
End If
Next rw
Columns(1).Delete
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
- Excel(エクセル) 処理年月が連続(指定年月~何ケ月間)している人のみ抽出をExcelのみで可能でしょうか 6 2022/10/31 14:57
- 友達・仲間 嫌われてる。その子は19歳。花子と呼びます。僕は太郎と呼びます。僕は20代後半男です。嫌われる様な事 5 2022/07/17 03:07
- 哲学 《太郎ハ花子ガ好きだ》構文から《象は鼻が長い / 僕はウナギだ / コンニャクは太らない》へ 1 2022/05/30 08:48
- 物理学 高校物理 この問題なのですが、1だと思ったんですけど合ってますかね。 仕事の大きさは質量が2倍のもの 1 2022/06/12 21:55
- Excel(エクセル) メモ帳からエクセルにセル区切りで表示させたいんです 7 2023/02/25 22:04
- Excel(エクセル) エクセルの参照について教えてください 1 2022/12/08 16:06
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- 心理学 太郎君を助けてあげてください。(長文です) 3 2022/11/20 15:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
エクセルで二つの数字の小さい...
-
LOOKUP関数を使えばいいのでし...
-
VBAで文字列を数値に変換したい
-
PowerPointで表の1つの列だけ...
-
エクセルの表から正の数、負の...
-
エクセル 文字数 多い順 並...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセル(勝手に太字になる)
-
50人を数回、グループ分けする...
-
エクセルで文字が混じった数字...
-
エクセルの並び変えで、空白セ...
-
オートフィルターをかけ、#N/A...
-
VBA 連続行データを5行ずつ隣の...
-
Excelで、A列にある文字がB列...
-
エクセルで2列のセルを連続して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセル 同じ値を探して隣の...
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
[関数得意な方]教えて下さい・...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 時間帯の重複の有無
-
Excelにてある膨大なデータを管...
おすすめ情報