No.3ベストアンサー
- 回答日時:
一例です。
デー範囲やエラー検出時の振舞等が不明でしたので、データ範囲をA列、エラー時は継続するようにしています。
Split関数で改行コードで配列化して各最終文字列を判定しています。
Sub sample()
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "A") <> "" Then
a = Split(Cells(i, "A"), Chr(10))
For j = LBound(a) To UBound(a)
If j < UBound(a) Then
If Right(a(j), 1) <> "," Then
MsgBox "カンマなし:" & Cells(i, "A").Address(0, 0)
Exit For
End If
Else
If Right(a(j), 1) = "," Then
MsgBox "カンマあり:" & Cells(i, "A").Address(0, 0)
End If
End If
Next
End If
Next
End Sub
No.2
- 回答日時:
何がしたいか、はっきりしない。
表現力を磨いて。検索ということは
同じ列でセルの文字列の最後がカンマであるセルから、終わりがカンマでないセル1つまでを、条件に合うものとして捜したいのか。
そして見つかったらシート上でどうするのか?順次セル範囲を選択するとかの方法(ニーズ)もあるだろう。
1セルに1文字列としてまとめて表示するニーズもあるだろう。
それと複数の列を問題にするのか、1列だけ問題にするのかも書いてない。
プログラムをする人は、疑問が起こりそうな、局面を予想できなくては、バグの多いものになると思うよ。
ーーー
例えば下記のようなことか。B列にまとめて表示している。
例データ
A列 A1:A10
42,
32,
12 42, 32, 12
4,
5,
23,
42 4, 5, 23, 42
12,
3,
20 12, 3, 20
ーー
Sub test01()
Dim d(20)
r = Range("A65536").End(xlUp).Row
MsgBox r
j = 1
For i = 1 To r
X = Cells(i, "A")
If Right(X, 1) = "," Then
'MsgBox "カンマあり " & X
d(j) = X
j = j + 1
Else
d(j) = X
'MsgBox "カンマなし " & X
Cells(i, "B") = Join(d)
Erase d
j = 1
End If
Next i
End Sub
最後の行はカンマ無しの数字文字列と仮定。
そうでない場合は、手当て(コードの追加)が必要。
配列に関して
Sub test02()
ReDim d(0)
r = Range("A65536").End(xlUp).Row
MsgBox r
j = 1
For i = 1 To r
X = Cells(i, "A")
If Right(X, 1) = "," Then
'MsgBox "カンマあり " & X
ReDim Preserve d(j + 1)
d(j) = X
j = j + 1
Else
ReDim Preserve d(j + 1)
d(j) = X
'MsgBox "カンマなし " & X
Cells(i, "B") = Join(d)
Erase d
j = 1
End If
Next i
End Sub
が良いのかも。
No.1
- 回答日時:
>1つのセルの中に文字が入力されていて
>・一番下の行はカンマがないこと
ということですので、1セル内に複数行ある前提で書きます。
>以下の条件をみたすプログラム
何をしたいのでしょうか?
条件を満たすかどうかは、
dim CheckStr as string
dim wk as single
dim x as single,y as single
x = 1 'チェックするセルの行
y = 2 'チェックするセルの列
CheckStr = sheets("シート名").Cells(x,y).value
dim flag as string
flag = ""
'最初と最後以外に改行文字があったとき
'(1文字目は判定しません⇒for~nextの外で判定)
'(最終文字の,も同様)
for wk = 2 to len(CheckStr) - 1
if mid(CheckStr,wk,1) = chr(13)
if mid(Checkstr,wk - 1,1) <> "," then
flag = "Error"
end if
end if
next
if mid(CheckStr,1,1) = chr(13)
and len(CheckStr) > 1 then
flag = "Error" '改行しかない場合はエラーとしていません。
end if
if mid(CheckStr,len(CheckStr),1) = "," then
flag = "Error"
end if
'さて、ここでなにをするのか???
if flag = "" then
'条件を満足しています。
else
'条件を満足していません。
end if
という風にして判定できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2022/12/08 15:45
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Excel(エクセル) エクセルの関数で質問です。 3 2023/02/24 14:07
- Excel(エクセル) COUNTIFSについて 2 2022/08/30 14:48
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) 条件式書式の設定 3 2023/07/04 05:34
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- Excel(エクセル) Excelのtextbox 1 2022/04/15 15:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
【Excel】指定したセルの名前で...
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
EXCELで変数をペーストしたい
-
Excel vbaで特定の文字以外が入...
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelのVBAで数字と文字列をマ...
-
【VBA】指定したセルと同じ値で...
-
特定の文字を条件に行挿入とそ...
-
セル色なしの行一括削除
-
VBA実行後に元のセルに戻りたい
-
【VBA】シート上の複数のチェッ...
-
指定した条件で範囲選択したい
-
Excel VBA、 別ブックの最終行...
-
EXCELのVBA-フィルタ抽出後の...
-
実行時エラー438 オブジェクト...
-
先頭と末尾を指定して連続した...
-
EXCEL VBA 画面のロックについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
連続する複数のセル値がすべて0...
-
Excel VBA、 別ブックの最終行...
-
VBAを使用した時間管理
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
おすすめ情報