
以下の関数で出来るような内容をマクロに置き換えたいと考えていますが、エラー回避が出来ません。
>IF(E5="全体",LEFT(F4,FIND(":",F4)-1),IF(D5="","",OFFSET(B5,-A5,0)&D5))
もし、E列のi行目の値が"全体"だったら、F列の(i-1)行目のセルに表示された文字列から
":"を探し、これが頭から数えて何番目から調べ、":"より前の文字列を切り取り、B列のi行目に
切り取った値を入力します。
もし、E列のi行目の値が空白だったら、何も処理はしません。
またもしE列のi行目の値が"全体"&空白でなければ、B列のi行目の値と、A列のi行目にナンバリングされた値を読み込んで、基準となるB列のi行目から読み込んだ文だけ戻ったところのセルにある文字列と結合したものをB列のi列目に入力します。
上記の状況をマクロで記述したいと思っていますが、エラーが出てなかなか回避できません。
どなたかわかる方がいらっしゃいましたら、教えて頂けますでしょうか。
例)
A列 B列 C列 D列 E列 F列
1行目 Q1:性別
2行目 全体
3行目 1 全体
4行目 2 男性10代
5行目 3 男性20代
6行目 4 男性30代
↓
マクロ実行結果
A列 B列 C列 D列 E列 F列
1行目 Q1:性別
2行目 Q1 全体
3行目 1 Q1全体 全体
4行目 2 Q1男性10代 男性10代
5行目 3 Q1男性20代 男性20代
6行目 4 Q1男性30代 男性30代
ちなみに、私が書いたマクロは↓です。
Sub 設問番号と軸名を結合して入力するマクロ()
Dim maxRow As Integer
Dim i As Integer
Dim moji As String
Dim length As Integer
Dim stringcheck As String
Dim stringmatch As String
Dim Num As Integer
maxRow = Sheets("数表 (2)").Cells(Rows.Count, 4).End(xlUp).Row
MsgBox "このシートの最終行は" & maxRow & "でした"
For i = 1 To maxRow
'もしD列の値が空白なら
If Sheets("数表 (2)").Cells(i, 4) <> "" Then
Sheets("数表 (2)").Cells(i, 2) = ""
Else
If Sheets("数表 (2)").Cells(i, 5) = "全体" Then
length = Cells(i - 1, 6)
stringcheck = Cells(i - 1, 6).Value
stringmatch = ":"
moji = Cells(i - 1, 6).Value
Num = InStrRev(moji, stringmatch) - 1
Sheets("数表 (2)").Cells(i, 2) = Left(moji, Num)
Else
Sheets("数表 (2)").Cells(i, 2) = Offset(Sheets("数表 (2)").Cells(i, 2), Sheets("数表 (2)").Cells(i, 1), 0) & Sheets("数表 (2)").Cells(i, 4)
End If
End If
Next i
End Sub
以上、宜しくお願いします。
No.1ベストアンサー
- 回答日時:
こんばんは!
後半部分がよく判らないのですが、
↓のような感じではどうでしょうか?
Sub Sample1()
Dim i As Long, k As Long, str As String, myRng As Range
With Worksheets("数表(2)")
For i = 1 To .Cells(Rows.Count, "D").End(xlUp).Row
If .Cells(i, "D") = "" Then
.Cells(i, "B").ClearContents
End If
If .Cells(i, "E") = "全体" Then
On Error Resume Next '←念のため//
Set myRng = .Cells(i - 1, "F")
str = Left(myRng, InStr(StrConv(myRng, vbNarrow), ":") - 1)
.Cells(i, "B") = str
k = i
Do
k = k + 1
If .Cells(k, "D") = "" Then Exit Do
.Cells(k, "B") = str & .Cells(k, "D")
Loop
i = k
Else
If Cells(i, "D") <> "" Then
.Cells(i, "B") = .Cells(i, "A") & .Cells(i, "D")
End If
End If
Next i
.Columns.AutoFit
End With
End Sub
※ ご希望通りの動きでなかったら
ごめんなさいね。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PowerPointで表の1つの列だけ...
-
エクセル(勝手に太字になる)
-
行を飛ばして検索条件にあう個...
-
エクセル 時間帯の重複の有無
-
エクセルで2列のセルを連続して...
-
エクセルのセル内の文字の一部...
-
エクセルの項目軸を左寄せにしたい
-
【画像あり】【関数】指定した...
-
エクセルで最初のスペースまで...
-
エクセルで二つの数字の小さい...
-
エクセルの表から正の数、負の...
-
エクセルの隣り合う列のグループ化
-
エクセルの並び変えで、空白セ...
-
2つのエクセルのデータを同じよ...
-
「B列が日曜の場合」C列に/...
-
Excelの行、列の左方向シフト、...
-
エクセルの表示画面(シート)...
-
Excelで半角の文字を含むセルを...
-
オートフィルターの絞込みをし...
-
VBAで文字列を数値に変換したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのエクセルのデータを同じよ...
-
PowerPointで表の1つの列だけ...
-
エクセルで二つの数字の小さい...
-
Excelで半角の文字を含むセルを...
-
【画像あり】【関数】指定した...
-
エクセル(勝手に太字になる)
-
エクセルで最初のスペースまで...
-
Excel、市から登録している住所...
-
エクセルの項目軸を左寄せにしたい
-
エクセルのセル内の文字の一部...
-
「B列が日曜の場合」C列に/...
-
妊娠祝い もらったことある
-
EXCELで 一桁の数値を二桁に
-
エクセルで文字が混じった数字...
-
オートフィルターの絞込みをし...
-
エクセルの表から正の数、負の...
-
Excel 文字列を結合するときに...
-
エクセル 文字数 多い順 並...
-
エクセルの並び変えで、空白セ...
-
エクセルで、列の空欄に隣の列...
おすすめ情報