
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
こんにちは
横からですが、VBAでの別方法の一例です。
データが重複している場合は、結果的に無視してよいものと解釈しました。
途中に空白セルが混在しているなどについては想定していません。
(チェックしてスキップすればよいだけですが…)
データのあるシート名と結果を表示するシート名を正しく修正しておいてください。
(現状はSheet1、Sheet2にしてあります。)
Sub Sample()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim dicR As Object, dicC As Object
Dim rw As Long, maxR As Long
Dim v1, v2
Set sh1 = Worksheets("Sheet1") '←元データのあるシート
Set sh2 = Worksheets("Sheet2") '←結果を表示するシート
Set dicR = CreateObject("Scripting.Dictionary")
Set dicC = CreateObject("Scripting.Dictionary")
maxR = sh1.Cells(Rows.Count, 1).End(xlUp).Row
sh2.Cells.Clear
For rw = 1 To maxR
v1 = sh1.Cells(rw, 1).Value
If Not dicR.exists(v1) Then
dicR.Add v1, dicR.Count + 1
sh2.Cells(dicR(v1), 1).Value = v1
End If
v2 = sh1.Cells(rw, 2).Value
If Not dicC.exists(v2) Then dicC.Add v2, dicC.Count + 2
sh2.Cells(dicR(v1), dicC(v2)).Value = v2
Next rw
Set dicR = Nothing
Set dicC = Nothing
End Sub
No.5
- 回答日時:
No.2です。
>実施してみたところ課題があり・・・
今回はSheet3を作業用として使用するようにしていますので、
操作するブックにはSheet3を使っていない状態にしておいてください。
Sub Sample2()
Dim i As Long, lastRow As Long
Dim c As Range, r As Range
Dim wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("Sheet2")
Set wS3 = Worksheets("Sheet3")
wS2.Cells.ClearContents
Application.ScreenUpdating = False
With Worksheets("Sheet1")
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS2.Range("A1"), unique:=True
.Range("B:B").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS3.Range("A1"), unique:=True
wS3.Range("A1").Sort key1:=wS3.Range("A1"), order1:=xlAscending, Header:=xlYes
lastRow = wS3.Cells(Rows.Count, "A").End(xlUp).Row
Range(wS3.Cells(2, "A"), wS3.Cells(lastRow, "A")).Copy
wS2.Range("B1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS2.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
Set r = wS2.Rows(1).Find(what:=.Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole)
wS2.Cells(c.Row, r.Column) = wS2.Cells(1, r.Column)
Next i
End With
wS3.Cells.Clear
wS2.Rows(1).Delete
wS2.Activate
wS2.Range("A1").Select
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
今度はどうでしょうか?m(_ _)m
No.4
- 回答日時:
添付図参照
E1: =IFERROR(INDEX($B$1:$B$15,SMALL(IF($A$1:$A$15=$D1,ROW(A$1:A$15),""),COLUMN(A1))),"")
【お断り】上式は必ず配列数式として入力のこと


No.3
- 回答日時:
多分、No2の方から回答の再提示があると思いますので、いまのところ回答するつもりはありませんが、
>実施してみたところ課題があり
>A1 X1 X2 X3
>B1 空 X2 空 X4
>C1 X1
>D1 空 空 空 空 X5 X6
>E1 空 X2 空 X4 X5 X6
>というようにする必要があることが分かりました。
>ここは、関数で何とかなりそうです
変更前のB列の実際の値は、X1,X2,・・・X999のようにXと数字だけなのですか。
それであれば、マクロで、最初からそのようにすることは可能です。(X1,X2は単なる例で、実際は違う値であればできません)
No.2
- 回答日時:
こんにちは!
VBAになりますが、一例です。
元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行になっていて、2行目以降にデータがあるとします。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
Application.ScreenUpdating = False
wS.Cells.ClearContents
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
.Range("A1").AutoFilter field:=1, Criteria1:=wS.Cells(i, "A")
Range(.Cells(2, "B"), .Cells(lastRow, "B")).SpecialCells(xlCellTypeVisible).Copy
wS.Cells(i, "B").PasteSpecial Paste:=xlPasteValues, Transpose:=True
Next i
.AutoFilterMode = False
End With
wS.Activate
wS.Range("A1").Select
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
早速ありがとうございます!
頂いたVBAを実施してみたところ無事並び替えができました。
実施してみたところ課題があり
A1 X1 X2 X3
B1 空 X2 空 X4
C1 X1
D1 空 空 空 空 X5 X6
E1 空 X2 空 X4 X5 X6
というようにする必要があることが分かりました。
ここは、関数で何とかなりそうです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 場合の数、確率 45 (浜松医科大学) 1 2023/07/29 13:52
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) エクセルの表で A1にデータの入力規則でリストを作って、 (リス、キリン、ゾウとします) リストを選 4 2022/07/15 09:29
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- Excel(エクセル) ある範囲のセルに何を入力すると、別のセルに○を表示させる 3 2022/04/05 15:51
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- 数学 ハイネボレルの被覆定理、内田伏一著 「集合と位相」定理22.1 1 2022/07/07 10:49
- Excel(エクセル) エクセル シート内のボックスを縦並びから横並びに 7 2023/04/05 04:28
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
シート削除して同名シート追加...
-
Excelでシートの違うデータでグ...
-
Excelで日付変更ごとに、自動的...
-
エクセル VBA VLOOKUP
-
エクセルで複数シートからデー...
-
エクセルで名簿を50音で切り分ける
-
【エクセル」 特定のセルで条件...
-
EXCELで2つのファイルから重複...
-
【EXCEL】実現可能でしょうか。
-
Excel2013において、複数シート...
-
Excelファイルの容量が異常に大...
-
ピボットテーブル
-
Excelですが、同一データが複数...
-
オーバークロックのやり方
-
CMOS-IC CD4007UBEのnmosfetの...
-
VBAで CTRL+HOMEの位置へ移動...
-
Excel 売上管理シートに入力し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
EXCELで2つのファイルから重複...
-
エクセル 縦に長い表の印刷時...
-
Googleスプレッドシートフィル...
-
VBAで CTRL+HOMEの位置へ移動...
-
トランジスタの選び方
-
時間帯の重複を除いた集計について
-
Excel 売上管理シートに入力し...
-
他のシートの一番下の行データ...
-
エクセルで名簿を50音で切り分ける
-
エクセルVBAで、特定文字から始...
-
Excelファイルの容量が異常に大...
-
【マクロ】同じフォルダ内にあ...
-
エクセル マクロ "特定の日付...
-
EXCEL の表を一行ずつシートに...
おすすめ情報