エクセル2002です。
--- K1|K2|K3|K4|
----------------
9/2|A |- |B |- |
9/3|- |A |A |B |
9/4|B |- |A |B |
9/5|- |- |- |A |
を
A|K1|9/2|---|---|
A|K2|9/3|---|---|
A|K3|9/3|9/4|---|
A|K4|9/5|---|---|
B|K1|9/4|---|---|
B|K2|---|---|---|
B|K3|9/2|---|---|
B|K4|9/3|9/4|---|
と別の場所あるいはべつのシートに並び替える方法はあるでしょうか?--の部分は空白です。
元表の列も行も増える可能性があります。
すみませんがぜひよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Public Sub convert()
Dim r As Range
Dim base As Range
Set r = ActiveCell.CurrentRegion 'アクティブセルのある範囲
'Set r = Selection '範囲を指定
SYMBOLS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
SYMLEN = Len(SYMBOLS)
Set base = Range("sheet2!A1") '書き込みの基準位置
ActiveWorkbook.Sheets("sheet2").Range("1:65536").ClearContents '書き込み先の消去
xMax = r.Columns.Count
yMax = r.Rows.Count
dataC = 0
valueC = 0
For i = 1 To SYMLEN
code = Mid$(SYMBOLS, i, 1)
For x = 2 To xMax
For y = 2 To yMax
If r.Cells(y, x) = code Then
If valueC = 0 Then
base.Offset(dataC, 0).Value = code
base.Offset(dataC, 1).Value = r.Cells(1, x)
base.Offset(dataC, 2).Value = r.Cells(y, 1)
base.Offset(dataC, 2).NumberFormatLocal = "m/d" '書式の設定
valueC = 3
Else
If base.Offset(dataC, 0) = code And base.Offset(dataC, 1) = r.Cells(1, x) Then
base.Offset(dataC, valueC).Value = r.Cells(y, 1)
base.Offset(dataC, valueC).NumberFormatLocal = "m/d" '書式の設定
valueC = valueC + 1
Else
dataC = dataC + 1
base.Offset(dataC, 0).Value = code
base.Offset(dataC, 1).Value = r.Cells(1, x)
base.Offset(dataC, 2).Value = r.Cells(y, 1)
base.Offset(dataC, 2).NumberFormatLocal = "m/d" '書式の設定
valueC = 3
End If
End If
End If
Next y
Next x
Next i
End Sub
とりあえず、作ってみました。
B|K2は、データなしで表示(処理)しないようになっています。
該当の表の中のセルをセレクトしておいてマクロを呼び出します。
結果は、"sheet2"へ書き出します
ありがとうございます。参考にさせていただき、勉強させていただきたいと思います。
もっと簡単なものと考えていたのですが、自分の未熟さを痛感しています。
ありがとうございました。
No.1
- 回答日時:
関数による解答を期待しておられるかもしれませんが、
難しいと思います。Sheet2のあるセルを考えた時、そこにくるべきSheet1のセルがどこかを式で割り出すことは、非常に複雑になると思われ、事実上不可能でしょう。
するとVBAを使うことになりますが、VBAでも少し経験がないと、ロジックが難しい。取りあえず近いところまでやって見ましたた。
Sheet1のB2:E5を範囲指定して実行します。
Sub test01()
Dim sh1, sh2 As Worksheet
Dim cl As Range
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
j = 1
For Each cl In Selection
If cl <> "-" Then
sh2.Cells(j, "A") = cl
sh2.Cells(j, "B") = sh1.Cells(1, cl.Column)
sh2.Cells(j, "C") = sh1.Cells(cl.Row, 1)
j = j + 1
End If
Next
'------
sh2.Range(sh2.Cells(1, "A"), sh2.Cells(j, "C")).Sort Key1:=sh2.Range("A1"), _
Order1:=xlAscending, Key2:=sh2.Range("B1"), Order2:=xlAscending
'------
For i = 1 To j
' (略)
Next i
End Sub
これで
A K12004/9/2
A K22004/9/3
A K32004/9/3
A K32004/9/4
A K42004/9/5
B K12004/9/4
B K32004/9/2
B K42004/9/3
B K42004/9/4
になりますが、同一日を1行にまとめるのに更にプログラムコードの追加が必要です(略)。
それでも該当のないBのK2行を空白にすることが出来ていません。
K1からK4が4つとか少ないなら、むしろ違うロジックでプログラムを組む方がよいかも知れない。
それと、Sheet1で追加したら、即座にSheet2に反映するのもあきらめてください。
上記は、Sheet1のデータ入力の区切りの良いところで毎回プログラムを手動実行するものです。
早速ありがとうございます。ちょっと自分にはレベルが高すぎる回答でした。参考にさしていただいて、勉強したいと思います。
補足ですが、A,B,K1-K4のところは手打ちしたいと思っております。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 確率について 8 2023/08/25 04:21
- 数学 単振り子とルンゲ・タック法 1 2022/07/15 00:05
- 化学 化学 クエン酸の解離 2 2022/06/08 17:44
- 物理学 トンネル効果について 3 2023/03/27 10:11
- Excel(エクセル) 別のシートの最終行の値を参照するには 5 2022/12/15 13:18
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) エクセルの並び替えについて 5 2022/07/11 00:49
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Excel(エクセル) IFERROR、SMALL関数について 2 2022/08/22 23:40
- 建設業・製造業 見積作成(エクセル)について教えて下さい。 2 2023/05/10 13:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで日付の入ったセルの...
-
エクセルでセルに「氏名を入力...
-
Excel ウインドウ枠の固定をす...
-
Excelファイルの「数式」タブ→...
-
関数を教えて下さい。
-
スマートな関数を教えて下さい。
-
EXACT関数とIF関数の組み合わせ...
-
スプレッドシートの関数VLOOKUP...
-
Excelのif関数で文字が見えなく...
-
Excel 2019 のピボットテーブル...
-
Excel 2019 は、SPILL機能があ...
-
各ページの1番上の表示について
-
写真のコピー
-
条件付き書式を教えてください
-
INDEX関数やMATCH関数で値を取...
-
エクセル グラフ軸について
-
excelの不要な行の削除ができな...
-
Excelで行をコピー、同じ行内に...
-
エクセル関数に詳しい方、教え...
-
Excel 改ページの文字色の変更...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定した箇所がずれる
-
EXCELのマクロ :再帰的...
-
10base-Tと100base-Tの違い?
-
ジャニーズ 当選後に姓の変更
-
スマートフォンの短期解約につ...
-
クレジットカードの分割払い
-
ライブの先着受付でどうゆうこ...
-
7万円の給付金の件ですけどコ...
-
ドスパラのパソコンに於けるロ...
-
振り込まれる予定のお金の確認方法
-
大阪医専AO入試について 救急救...
-
ドスパラで75万円のパソコンを...
-
paidy 分割払い 審査落ち 分割...
-
教えてください。 ローソンチケ...
-
JCBカードwで分割払いにしたい...
-
訪問に来る勧誘にどんな風に断...
-
ジャパンネット銀行デビットカ...
-
銀行口座作りたいんですけど、...
-
アップルウォッチの予約をした...
-
あるミュージシャンのライブが...
おすすめ情報