F列に文章が入力されていればM列に”1”の値を入力するという風にしたいのですが、入力有なのにカウントされない行がいくつかあります。理由と解消方法を探しているのですが、自力では難しそうなので、どなたか思い当たることがあれば、教えていただけませんでしょうか。
該当部分
↓
prefSh.Activate
'M1のセルにタイトル記入
Cells(1, 13).Value = "入力あり"
'入力されている場合は"1"を右方向に7つ先のセルに入力
Dim 列 As Long, 行 As Long
列 = 6 '調査対象セルの列番号
For 行 = 2 To workEndR '行番号2から最終行まで
If Cells(行, 列) <> "" Then '空白セルでないなら
Cells(行, 列).Offset(0, 7).Value = "1" 'の右方向に7つ先のセルに1と表示
End If
Next '繰り返す(Forへ戻る)
ちなみに、このカウントされない行たちに別の目的(B列を検索値にしてA列の値を転記)でFindメソッドを使おうとしてもエラーになります。他の行では上手くいきます。A列やB列のデータの型を調べても、検索元と検索先で数値と文字列の不一致などは起きておらず、なぜこのいくつかの行だけ上手くいかないのか、上記の処理ができないことと併せて、2重に悩んでおります。
No.7ベストアンサー
- 回答日時:
>区切り位置を変更したらできました!
良かったです。
前段コード、値に問題があったのでしょうか?
どのような表組みでどんな値だとそうなるのか興味はありますが、
それは、またの機会があればと思います。
区切り位置の操作のVBAコードは、マクロの記録でも記録できると思います
決まった操作であれば、オプションが多いのでデフォルトを削除すれば良いと思います。
また、検索などで調べるのであれば、TextToColumns メソッドなどで調べれば、すぐに導入できると思います。
最後までご丁寧に教えてくださり、ありがとうございます。
アドバイスに従って、やってみます!
オリジナルで開発していただいたシステムから吐き出したCSVを、VBAでEXCELに取り込んだ(シート追加した)ところ、このような一部不具合が生じておりました。
元データがCSVだからかもしれませんね・・
また、質問の「ちなみに〜」以降のところも勉強しながらFindからDictionaryに書き換えている最中で、そちらもまた詰まっているので、別途改めて質問する予定です。もしよろしければ、そちらもよろしくお願いいたします。
No.6
- 回答日時:
#5、野暮用で切りましたが、連続で申し訳ないです。
結合セルなんて落ちは無いですよね
結合セルがあるようであれば、
If .Cells(行, 列).MergeArea(1) <> "" Then
かな?
たくさん案を出していただき、ありがとうございます。
こちらのヒントをいただきセルを見直したところ、つながっているように見えるが結合セルではなかったので、(手動で)区切り位置を変更したらできました!
本当に助かりました。(そして、こんな結末で申し訳ありません)
データ>区切り位置の手順も、手動でやらずに済むように、VBAをさらに調べてみます。本当にありがとうございました!
No.4
- 回答日時:
#3です
使用されていないと言う事ですね。
空白とありますが実は改行コードやスペースがあるとかではないでしょうか?
Sub a()
Dim 列 As Long, 行 As Long
列 = 6 '調査対象セルの列番号
With ActiveSheet
For 行 = 2 To .Cells(Rows.Count, 6).End(xlUp).Row
.Cells(行, 列) = Replace(Replace(Replace(.Cells(行, 列).Text, Chr(10), ""), " ", ""), " ", "")
If .Cells(行, 列) <> "" Then '空白セルでないなら
.Cells(行, 列).Offset(0, 7).Value = "1" 'の右方向に7つ先のセルに1と表示
End If
Next '繰り返す(Forへ戻る)
End Sub
有った場合支障があるといけないのでコピーシートで試してください。
ちなみに"1"はExcelで数値にされちゃいそうですが、ご質問とは関係ありませんね。
No.3
- 回答日時:
こんにちは、
コードに問題は、無いように思いますが、
>Findメソッドを使おうとしてもエラー との事なので、
これは、すべて想像(推測)の世界ですが、、可能性を考えました。
先ず、On Error Resume Next を使用していませんでしょうか?
使用していないのなら、以下はすべて意味がありませんので読み飛ばしてください。
使用している場合は、参照元、出力先に保護や入力制限が設定されていないでしょうか?
シートに保護がかかっていて、不具合セルにロックがかかって要るなど・・
この条件なら、空白以外で処理をしようとした時、セルの保護によりエラーが発生して入力されず、次の処理に進み、結果 値があるのに出力されない結果になると思います。。
ご回答ありがとうございます。
今回、On Error Resume Nextは使用しておりませんでしたが、使用すると上記のような事象が起こる可能性があるということを知ることができました。
Findを使うと検索に引っかからない場合があるようなので、配列など他の記載方法を勉強して、試みてみます。
引き続きアドバイスは募集しておりますので、また何か良い方法がありましたら、宜しくお願いいたします。
No.1
- 回答日時:
該当セルに半角のスペース又は全角のスペースがあると、空白セルと判定されません。
If Cells(行, 列) <> "" Then を
If Trim(Cells(行, 列).value) <> "" Then
とされてみてはいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで色の付いているセルの行削除
-
エクセルで特定の文字列が入っ...
-
【Excel関数】UNIQUE関数で"0"...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセルマクロ オートSUM(合...
-
特定の文字がある行以外を削除...
-
Excelのフィルター後の一番上の...
-
エクセルVBA 最終行を選んで並...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロで数値が変っ...
-
チェックボックスをクリックし...
-
空白行から空白行までの合計値...
-
EXCELマクロを使い、空白行では...
-
【VBA】全て空白のセルの列幅を...
-
エクセルVBA:データ端に画...
-
エクセル 時間の表示形式AM/PM...
-
エクセルマクロで偶数行(又は...
-
エクセル2016で時間を入力して...
-
エクセル マクロ オートフィ...
-
エクセルマクロで特定の文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル マクロ オートフィ...
-
エクセルで特定の文字列が入っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
VBAで色の付いているセルの行削除
-
エクセル 上下で列幅を変えるには
-
Excel グラフのプロットからデ...
-
excelのデータで色つき行の抽出...
-
AのセルとB行を比較して、一致...
-
エクセル マクロで数値が変っ...
-
結合されたセルをプルダウンの...
-
セルの色によって条件文をつけ...
-
エクセル2016で時間を入力して...
-
アクティブになっている行をマ...
-
罫線の斜線を自動で引くマクロ
-
Excelでカタカナ・ひらがな・英...
-
excel 小さすぎて見えないセル...
-
EXCELマクロを使い、空白行では...
-
エクセルマクロで偶数行(又は...
おすすめ情報