質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

2回答

1254閲覧

空白セルを検索してその隣列から貼り付けしたい

GKHHKJ

総合スコア39

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/06/25 08:08

以下の”組織図”シートから”Sheet1”シートにコピペするマクロなのですが、
うまくいきません。
”組織図” 例)
営業課     メンバー)山田花子
課長)田中太郎

”Sheet1”シートのA列に課を、
B列に一つ下のセルの課長を、
C列に一つ右のセルのメンバーを貼り付けたいのですが、
以下の書き方ですと、C列の同じ空白セルに何度も貼り付けしてしまいます。
どうしたらよいでしょうか。

Sub メンバー検索()

Dim SearchRange As Range '検索範囲格納 Dim ResultRange As Range '検索結果格納 Dim StartRange As Range '検索行格納 Dim KeyItem As String Dim MsgStr As String Set SearchRange = Worksheets("組織図").Range("A:Z") '検索したいデータ範囲 KeyItem = "課" Set ResultRange = SearchRange.Find(KeyItem, LookAt:=xlPart) If Not ResultRange Is Nothing Then Set StartRange = ResultRange.Offset(0, 1) '最初に見つかったセルを格納しておく Do If InStr(ResultRange.Value, "課長") = 0 And InStr(ResultRange.Value, "課担当") = 0 Then ResultRange.Offset(0, 1).Copy Worksheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Offset(1, 1).PasteSpecial (xlPasteValues) Application.CutCopyMode = False End If Set ResultRange = SearchRange.FindNext(After:=ResultRange) '次の検索セルを指定する If ResultRange.Offset(0, 1).Address = StartRange.Address Then '見つかったセルが最初のセルか判定 Exit Do '同じ場合はループを離脱 End If

Loop

End If

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ごめんなさい質問文とソースを何十回読み直しても何がしたいか理解できませんでした。
「A列に課をコピーする」処理と「B列に課長をコピーする」処理はどこ行ったんですかね・・・
無理やり解釈するならこういう事をやろうとしている?

VBA

1Dim i As long 2 3Worksheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Offset(1 + i, 1).PasteSpecial (xlPasteValues) 4Application.CutCopyMode = False 5 6i = i + 1 7

投稿2021/06/25 09:07

neconekocat

総合スコア443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんな感じでどうでしょうか。(修正しました)

VBA

1Dim ka, kacho, member 2ka = ResultRange.Value 3kacho = ResultRange.Offset(1, 0).Value 4member = ResultRange.Offset(0, 1).Value 5Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(1, 3).Value = Array(ka, kacho, member) 6

(修正前)

VBA

1Worksheets("Sheet1").Cells(Rows.Count, 3).End(xlUp).Offset(1).PasteSpecial xlPasteValues

投稿2021/06/25 08:26

編集2021/06/25 09:11
jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GKHHKJ

2021/06/25 08:41

頂いたとおりに書くとC列の1行目から貼り付けられてしまいました(´;ω;`)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問