A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No.1です。
質問に対して・・・
① 初期値は設定しなくても良いのですか?
確かに丁寧にやれば初期値は設定してやるのが良いのでしょうね。
ただ変数の初期値として
Integer型や Long型であれば、0
Boolean型であれば、False
String型であれば、""
(厳密にいえばString型は結構ややこしいみたいです)
等々
という認識がありますので、敢えて初期値は設定していませんでした。
② Cells(i, "E").ClearContents
なぜクリアするのか?という件ですが、
データ変更があった場合に対応させるためでした。
データ変更はないのであれば前回の
>Else
>Cells(i, "E").ClearContents
の2行は不要です。
この程度でよろしいでしょうか?m(_ _)m
質問に対しても丁寧に回答して頂きましてありがとうございました。
大変助かりました。
勉強になりました。
また機会がありましたら、宜しくお願いします。
No.1
- 回答日時:
こんにちは!
↓のような感じでよいのであれば・・・
Sub Sample1()
Dim i As Long, j As Long, myStr As String
Application.ScreenUpdating = False
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For j = 1 To 4
If Cells(i, j) <> 0 Then
myStr = myStr & j & ","
End If
Next j
If Len(myStr) > 0 Then
Cells(i, "E") = Left(myStr, Len(myStr) - 1)
Else
Cells(i, "E").ClearContents
End If
myStr = ""
Next i
Application.ScreenUpdating = True
End Sub
これではどうでしょうか?m(_ _)m
早速の回答ありがとうございました!
ちょっと確認させてください。
myStr = myStr & j & ","
こちらは、初期値は設定しなくても良いのですか?
例えば1行目の場合、myStrは何も入っていない箱だと思うので、
初期値が必要なのではと思ったりもしましたが・・・。
If Cells(i, j) <> 0 Then
myStr = myStr & j & ","
これは、セルの値が0でなければ、どんどんカンマ区切りでつなげていく操作をしていますね。
If Len(myStr) > 0 Then
Cells(i, "E") = Left(myStr, Len(myStr) - 1)
結合したものの文字数をカウントして、0より大きければ、
結合されたものは最後に「,」が入ってるから最後から1文字削除したものをE列に入れる操作ですね。
Cells(i, "E").ClearContents
こちらは、
If Len(myStr) > 0 Thenで判定した結果、文字列の長さが0だった場合にコンテンツをクリアすることだと思いますが、
何故クリアするのですか?
全てが「0」でもmyStrには何か入ってる状態だから、コンテンツをクリアするということですか?
もしかしたら、最初に確認させてもらったところにつながる内容かもしれませんが。
(myStr = myStr & j & "," ←これについて初期値は設定しなくて良いですか?という質問につながるような・・・)
以上、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) エクセル 2つの列にある値の完全一致を抜き出すVBA 15 2022/12/15 03:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LEFT関数とIF関数の組み合わせ...
-
エクセルで離れた列を選択して...
-
エクセルで住所を県と市・郡と...
-
VBAで結合セルを転記する法を教...
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
VBAで別ブックの列を検索し、該...
-
えABのある列って
-
エクセルマクロPrivate Subを複...
-
Excel文字列一括変換
-
VBA 選択範囲とUnionの使い方に...
-
エクセルでセル12個間隔で合...
-
エクセルの列末のデータだけ表...
-
オートフィルターの複数抽出と...
-
データシートビューのタイトル...
-
エクセルのシートの大きさを変える
-
エクセルVBAでデータ最終行取得...
-
最終行に合計(最終行が列によ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
VBA
-
Excel文字列一括変換
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報
早速の回答ありがとうございました。
文字数オーバーのため、別項目を立ててお礼と再度確認したい内容について投稿させて頂きました。
宜しくお願いします。