No.3ベストアンサー
- 回答日時:
こんにちは。
質問を読ませていただいた感じでは、「あとから入社した人を先にいる人の次の行」に入れるのであって、それは、Excelの「並べ替え」の範囲とは、違ったものだと解釈しました。
それも、営業部ではなくて、営業部+営業支援という並びで探さなくてはならないわけだと思います。Findメソッドで、2重検索は、補助列を作らない限りは、出来そうにもありません。後は、可能性としてはAdvnacedFilterぐらいかと思います。
そこで、以下を考えてみました。
ただし、一つだけ、このマクロには条件があります。それは、少なくとも、部・課自体は並べ替えが済んでいて、点在して存在していないことです。
以下のマクロをサブルーチンにして、検索行を引数に取るようにすれば、検索行は、複数あっても可能だと思います。
検索行を以下に設定します。
F2~
F G H
営業部 営業支援 小野伸二
とシートに書き込んでください。
ユーザー設定は、以下の二つです。
Set kensaku = Range("F2")
Set r = Range("A2", Range("A2").End(xlDown))
以下は、シートモジュールか、標準モジュールにしてください。
なお、このマクロは、同じものを二重に登録する可能性を考慮していません。
Option Explicit
Sub Sample1()
Dim r As Range, Kensaku As Range, rc As Long, i As Long
Dim num As Variant, k As Long
Dim ar() As Variant
'データの左端 (要ユーザー設定)
Set r = Range("A2", Range("A2").End(xlDown))
rc = r(r.Count).Row '最終行
'検索行の左端セル(要ユーザー設定)
Set Kensaku = Range("F2")
If IsEmpty(Kensaku) Then _
MsgBox "検索値がありません。", vbCritical: Exit Sub
k = 1
For i = r.Rows.Count To 1 Step -1
'2つの列を配列に逆さまに入れる
ReDim Preserve ar(1 To k)
ar(k) = r.Cells(i, 1).Value & r.Offset(, 1).Cells(i, 1).Value
k = k + 1
Next i
'Match 関数を使って調べる
num = Application.Match(Kensaku.Value & Kensaku.Offset(, 1).Value, _
ar, 0)
If Not IsError(num) Then
Rows(rc - num + 2).Insert
Rows(rc - num + 2).Resize(, 3).Value = Kensaku.Resize(, 3).Value
Kensaku.Resize(, 3).ClearContents
Else
If MsgBox("該当する部・課が見つかりません。" & _
"最後尾にデータを貼り付けますか", 32 + vbOKCancel) = vbOK Then
Rows(rc + 1).Resize(, 3).Value = Kensaku.Resize(, 3).Value
Kensaku.Resize(, 3).ClearContents
End If
End If
Set r = Nothing: Set Kensaku = Nothing
End Sub
No.2
- 回答日時:
結局営業部の一番下の人の下に挿入できればいいんですよね?
営業部を検索し、営業部ではない場所まで下に移動した後挿入と言うマクロです。(検索語を入力するセルを作ってそのセルの値から検索のほうが使いやすいとは思いますが)
並び替えを行ったと後に使用すれば使えるのではないと思います。
Sub 検索して挿入()
Dim kensaku As Range
Dim ken As String
Dim a As Long
'検索する語が営業部で、検索する列がA列に有る場合
Set kensaku = Range("A:A").Find(What:="営業部")
kensaku.Select
ken = Selection.Value
MsgBox ken
Do Until Not ActiveCell.Value = ken
ActiveCell.Offset(1).Select
Loop
Range(Selection, Selection.End(xlToRight)).Insert xlShiftDown
End Sub
No.1
- 回答日時:
普通は部、課にはコードを(会社が)設定します。
会社が設定してないなら自分で設定します。
職員には職員コードを設定します。
入社した人を最後に来るようにするには、入社年月日をデータとして持ちます。
そして部+課+職位+入社年月日などでソートします。
そのつどソートとしないなら、ファイルに追加する人の、その順序のところを探して、挿入します。
ですから、どう言う設計にするかが書かれていないので、答えにくいのです。
(1)最後に追加して、諸コードで全体ソート
(2)しかるべき場所を探して挿入。しかるべきところを探すにしても
母体(マスタ)は諸コード順にソートされている(前回追加後ソートしておく)場合が多いと思います。
VBAでソートしたいならマクロの記録をとって、少し修正すればよいことです。
設計というか、そういうことが肝心、すんでいるなら、質問に、どういう設計になっているか、それらを説明することが肝心です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
並べ替えについて
-
ファイルの漢数字の順番につい...
-
上から何番目か。
-
1の行を固定した上でVBAを用い...
-
Accessのテーブルの変化を自動...
-
INNER JOINについて
-
検索結果を指定件数ずつ抽出表...
-
select文の実行結果に空白行を...
-
where句中のtrim関数について
-
時間帯テーブルから直近空き時...
-
アクセスのレポートでレコード...
-
テーブルの最後(最新)のレコー...
-
SQL*Loader Append
-
データ
-
【PL/SQL】FROM区に変数を使う方法
-
osqleditについて
-
MySQLでの近似値順での値の取得...
-
SQLローダーCSV取込で、囲み文...
-
FileMaker Pro 9 同一レコード...
-
group byの並び順を変えるだけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルの漢数字の順番につい...
-
並べ替えについて
-
レコードの登録順がおかしい
-
1の行を固定した上でVBAを用い...
-
テーブルレーコードをソートし...
-
リストボックス内を昇順並べる方法
-
エクセル、並び替え正しくソー...
-
コンボボックスのソートについて
-
月末日のみソートしたい
-
ハイフンの入ったデータの並べ替え
-
accessでDISTINCT 句と矛盾
-
アクセスに関して。クエリの並...
-
都道府県順、北からソートした...
-
SQLで曜日のソートを月火水木金...
-
数字と漢字が混じった日付デー...
-
Excelのオートフィルタでソート...
-
Selectした時のレコードの取得順
-
ファイルメーカーでソート後の...
-
excel:一番上の行がソートでき...
-
OracleとAccessの出力順の違い
おすすめ情報