エクセル表計算関数ではできない処理として
多分オートフィルターでは工夫すればできるかもしれませんが・・
手順が面倒なので・・入力処理・ループ処理・選択処理・文字列操作・転記処理
<目的>
ショートカットのキー種別に別の表に転記したい。ショートカット一覧表のエクセルを作成し・・
Alt とか CtrlとかWindowsとかの、各キーの
目的の文字が先頭から記載されているものだけを
Sheet1から選択し、Sheet2へ
VBAで転記をする
<入力処理>(InputBox)
<ループ処理>(For~ Next)
<選択処理> (Select case~Case ~End Select)
<文字列操作> (Mid())
‘以下コード
‘———————————————-
‘ループ処理を行う
‘今回の処理は、Sheet1からSheet2へ転記
‘入力した文字が先頭にある場合の転記を行う
‘———————————————-Sub Tenki()
‘———————————————-
‘変数の宣言Dim LastRow As Long ‘最終行を取得する変数
Dim LastColumn As Long ‘最終列を取得する変数
Dim Row0 As Long ‘繰り返し処理を行う為の変数
Dim Row1 As Long ‘書込するシートの行番号
Dim Kstr As String ‘検索する文字
Dim Ksms As Integer ‘検索する文字数‘———————————————-
‘変数に対する値の取得とセット
LastRow = Cells(Rows.Count, 5).End(xlUp).Row ‘最終行
LastColumn = Cells(2, Columns.Count).End(xlToLeft).Column ‘最終列
Row1 = 2 ‘最初にスタートするSheet2の行番号 2行目からスタート‘———————————————-
‘<入力処理>
‘インプットボックスによる文字の入力と長さ取得Kstr = InputBox(“検索する先頭文字列を入力してください”, “検索文字入力”, “Alt”)
Ksms = Len(Kstr)‘———————————————-
‘<ループ処理>
For Row0 = 5 To LastRow
‘<選択処理>
Select Case Mid(Cells(Row0, 5).Value, 1, Ksms) ‘Sheet1の該当行の値の先頭から指定した文字数の文字が
Case Kstr ‘入力した文字だった場合
‘列のループ処理
For Col0 = 5 To LastColumn ‘5列目から最終列までの値を
‘Sheet1からSheet2へ転記する
Sheets(“Sheet2”).Cells(Row1, Col0 – 3).Value = Cells(Row0, Col0) ‘Sheet2には2列目から書き込む 5-3=2
Next Col0
Row1 = Row1 + 1 ‘次に書き込む為、行の値を1加えておく
End Select
Next Row0
‘———————————————-
End Sub
‘ここまでコード
あとは実行する場合は三角形の実行ボタンを押すか
ショートカット F5 実行
F6 ステップイン