No.5ベストアンサー
- 回答日時:
No4です。
すみません。前回のは破棄してください。
前回のは途中に空白行があると正しく動作しません。
こちらを使用してください。
Option Explicit
Public Sub 統合処理()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim maxrow As Long
Dim wrow As Long
Dim row3 As Long
Dim new_str As String
Dim prev_str As String
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set ws3 = Worksheets("Sheet3")
ws2.Cells.ClearContents
maxrow = ws1.Cells(Rows.Count, "A").End(xlUp).Row
ws2.Range("A1").Resize(maxrow, 4).Value = ws1.Range("A1").Resize(maxrow, 4).Value
ws3.Range("A1").Resize(maxrow, 4).Value = ws1.Range("A1").Resize(maxrow, 4).Value
ws3.Rows("2:" & Rows.Count).ClearContents
ws2.Range("A1").Resize(maxrow, 4).Sort key1:=ws2.Range("A1"), Header:=xlYes
prev_str = ""
row3 = 1
For wrow = 2 To maxrow
new_str = ws2.Cells(wrow, "A").Value
If new_str <> prev_str Then
row3 = row3 + 1
ws3.Cells(row3, "A").Resize(1, 4).Value = ws2.Cells(wrow, "A").Resize(1, 4).Value
Else
ws3.Cells(row3, "C").Value = ws3.Cells(row3, "C").Value & vbLf & ws2.Cells(wrow, "C").Value
ws3.Cells(row3, "D").Value = ws3.Cells(row3, "D").Value & vbLf & ws2.Cells(wrow, "D").Value
End If
prev_str = new_str
Next
MsgBox ("完了")
End Sub
確認、連絡が遅くなり申し訳ありません。
希望通りの実行結果が得られました。
自分ではとても考えつかきませんでした。
しかももっと長くなるものだと思っておりましたので、こんなに短く作成できるものなんだと驚いております。
厚く御礼申し上げますm(__)m
No.4
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Option Explicit
Public Sub 統合処理()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim maxrow As Long
Dim wrow As Long
Dim row3 As Long
Dim new_str As String
Dim prev_str As String
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set ws3 = Worksheets("Sheet3")
ws1.Range("A1").CurrentRegion.Copy ws2.Range("A1")
ws1.Range("A1").CurrentRegion.Copy ws3.Range("A1")
ws3.Rows("2:" & Rows.Count).ClearContents
ws2.Range("A1").CurrentRegion.Sort key1:=ws2.Range("A1"), Header:=xlYes
maxrow = ws2.Cells(Rows.Count, "A").End(xlUp).Row
prev_str = ""
row3 = 1
For wrow = 2 To maxrow
new_str = ws2.Cells(wrow, "A").Value
If new_str <> prev_str Then
row3 = row3 + 1
ws3.Cells(row3, "A").Resize(1, 4).Value = ws2.Cells(wrow, "A").Resize(1, 4).Value
Else
ws3.Cells(row3, "C").Value = ws3.Cells(row3, "C").Value & vbLf & ws2.Cells(wrow, "C").Value
ws3.Cells(row3, "D").Value = ws3.Cells(row3, "D").Value & vbLf & ws2.Cells(wrow, "D").Value
End If
prev_str = new_str
Next
MsgBox ("完了")
End Sub
No.3
- 回答日時:
No1です。
画像のアップありがとうございました。
補足要求です。
1.シート名ですが、以下の通りで良いですか。
変更前:Sheet1
並び変えたシート:Sheet2
A列が同じ行だけ抽出したシート:Sheet3
2.元のシートに見出し行はないと考えて良いですか。
(1行目からデータの前提で良いですか)
結果的に、他のシートも、見出し行はなくなります。
3.「A列が同じ行だけ、別シートに抽出」ということは、
A列に同じ行がないデータ(A列に同じ値が1件しかない行)は、別シートに出力しなくて良いのでしょうか。
それとも、1件しかなくても、別シートに出力するのでしょうか。
4.B列についてですが、提示されたサンプルをみると、
A列が同じときB列も同じ値になっています。B列が異なるときは、B列のセル内に2行のデータを格納すると考えて良いですか。
例(先頭を1行目とします)
A1 B1
share_mail1 sharemail1@xxxx.col.jp
A3 B3
share_mail1 sharemail1@xxxx.col.jp
となっていますが、
B3の値が
sharemail1@zzzz.col.jp
のような場合です。
Sheet3へ出力するのは、
A1 B1
share_mail1 sharemail1@xxxx.col.jp
sharemail1@zzzz.col.jp
として良いですか。
それとも、A列が同じ場合、無条件にB列も同じになるとみなして良いのでしょうか?
その場合はsharemail1@zzzz.col.jpを無視して
A1 B1
share_mail1 sharemail1@xxxx.col.jp
と出力します。
5.A列が同じのでソートしたとき、C列とD列は必ず異なっているという前提で良いですか。
例としてSheet1に以下のようなデータがあった場合でも
A列 B列 C列 D列
share_mail1 sharemail1@xxxx.col.jp 田中太郎 taro.tanaka@xxxx.co.jp
share_mail1 sharemail1@xxxx.col.jp 田中太郎 taro.tanaka@xxxx.co.jp
share_mail1 sharemail1@xxxx.col.jp 田中太郎 taro.tanaka@xxxx.co.jp
share_mail1 sharemail1@xxxx.col.jp 田中太郎 taro.tanaka@xxxx.co.jp
Sheet3へ出力するのは
A1 B1 C1 D1
share_mail1 sharemail1@xxxx.col.jp 田中太郎 taro.tanaka@xxxx.co.jp
田中太郎 taro.tanaka@xxxx.co.jp
田中太郎 taro.tanaka@xxxx.co.jp
田中太郎 taro.tanaka@xxxx.co.jp
になります。
(C1セル内に4行のデータ、D1セル内に4行のデータ)
お忙しい中、ご確認いただきありがとうございます。
いただきました追加質問については
以下が回答となります。
■1について
いただいた通りでOKです。
■2について
1行目は可能であれば「見出し行」にしたいと考えています。
しかし、手間であれば、無くても問題ありません。
■3について
1件だけの場合も含めて出力したいと考えております。
■4について
失礼いたしました。データがおかしかったようです。
A列が同じ場合、無条件にB列も同じになるとみなしていただいてOKです。
■5について
記載いただいた通りの認識です。
>A列が同じのでソートしたとき、C列とD列は必ず異なっているという前提です。
(C1セル内に4行のデータ、D1セル内に4行のデータ)
No.2
- 回答日時:
こんばんは
手作業でもほとんど手間はかからないと思いますので、以下は手作業での例です。
(マクロはNo1様が回答してくださると思いますので・・)
添付画像が見えないので、文章だけからの回答になりますが・・・
(FILTER関数が使える環境と仮定しています)
1)A列を(仮に)E列にコピペ
2)そのまま、「データ」―「重複の削除」で一意のリストを作成
3)F1セルに
=TEXTJOIN(CHAR(10),1,FILTER(B:B,$A:$A=$E1))
を入力し、G1にフィルコピー
4)F1:G1を選択状態で、右下のフィルハンドルをダブルクリック
(下方に、E列の値がある範囲までフィルコピーされます)
以上で、基本的にできると思います。
セルの表示を「折り返して~」や行の高さを「自動調節」等にしておくと良いでしょう。
4)までの操作は、1~2分もあれば十分と思います。
対象が2000行あると、4)の作業後にエクセルが計算するのに若干時間を要するかも知れません。
※ 上記の結果は関数値になっているので、固定値にしたければ、E:G列を選択し「コピー」-「値をペースト」することで固定文字列にすることができます。
ご教授いただき、ありがとうございます。
本番環境では教えていただいた関数が使えるのは確認出来ているのですが、私個人の環境では確認が出来ません。
その為、後日確認致します。
No.1
- 回答日時:
画像がよく見えません。
画像をこのサイトへアップすると荒い画像になってしまします。gyazo.comへアップされてみてはいかがでしょうか。
下記はgyazo.comへアップしたサンプルです。(画像の内容は本件とは関係ありません)
https://gyazo.com/d54a2d86b804590f4d05fc100a862572
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) Excelの文字列を転記したいのですが。 2 2022/09/30 12:09
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel元に戻す方法を教えてくだ...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
「B列が日曜の場合」C列に/...
-
エクセルで最初のスペースまで...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
2つのエクセルのデータを同じよ...
-
エクセル 文字数 多い順 並...
-
文字列に数字を含むセルを調べたい
-
エクセルで文字が混じった数字...
-
エクセルの並び変えで、空白セ...
-
エクセル(勝手に太字になる)
-
Excelで半角の文字を含むセルを...
-
エクセルの表から正の数、負の...
-
Excel、市から登録している住所...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 同じ値を探して隣の...
-
オートフィルターをかけ、#N/A...
-
EXCELで 一桁の数値を二桁に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセルで、列の空欄に隣の列...
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
文字列に数字を含むセルを調べたい
-
50人を数回、グループ分けする...
おすすめ情報
画像が追加でアップできなかったので、教えていただいたサイトにアップしなおしました。
https://gyazo.com/9ed0b7435406250c8e16e743e483b054