• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字の連結について)

文字の連結について

このQ&Aのポイント
  • Q列に入っている文章に条件を満たす文字(例:決済済み)が入っていれば、W列に入っている文字の後ろに「決定」という文字を追記したい
  • A~Z列までデータが入っているシートで、Q列の文字条件を満たしていればX列に「決定」と入力し、W列とX列の文字を連結してW列に反映するマクロを作成しています
  • マクロの中で文字の連結に「&」を使っていますが、連結が正しく行われていないため、解決方法を探しています

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> 3、すべてチェックが終わったらWとX列の文字を連結してW列に反映してX列を削除する。 X列の処理は不要では?初回の判定ループ(行単位)で行って良いと思います。 For j = .Cells(65536, i).End(xlUp).Row To 2 Step -1  If Mid(Range("Q" & j), 3, 4) = "決済済み" Then   Range("W" & j) = Range("W" & j) & "決定"  End If Next j '決定決定となることを避けるなら、判定を増やすとか For j = .Cells(65536, i).End(xlUp).Row To 2 Step -1  If Mid(Range("Q" & j), 3, 4) = "決済済み" Then   if Mid(Range("Q" & j), 5, 2) <> "決定" Then    Range("W" & j) = Range("W" & j) & "決定"   End If  End If Next j

saiwai
質問者

お礼

再度ご回答ありがとうございました。 仕事の注文と締切が短かった為てんぱっていたところ大変助かりました。 まだまだ無駄な所が多く、勉強になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

実際データは質問に上げるのは差しさわりを感じても、旨く他の外のありそうな例を考えるぐらいの努力はすること。 詳細の意味がぼやけて取りにくい。 そのまま出しても何処の会社の・誰のと言うことはわからず差し障りは無いと思うが、異常に神経質な質問者が多い。 其れで表権があいまいになったりする。 >Range(i & j), 2, 4) = こんなところへ&を使う例は無いのではないか。 Cells(i,j)かRange("K" & j)・・Kは列番号。この場合K列のデータを処理する場合の例。こんな書き方ではないか。 セルのあらわしかたなどVBAの最初の事項ではないか。 >Columns("X:X") はX列か不定の意味でXとしたのか? >連結に「&」を使う事はわかるのですがどうしても連結してくれません &場刈り注目せず、結果どうなったかの1例でも知るほうが、回答のためになる。

saiwai
質問者

お礼

ご意見ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> ※「決済済み」の文字の前には必ず2文字何かしらの文字が含まれます ならば以下の行はTrueにならないのでは? If Mid(Range(i & j), 2, 4) = "決済済み" Then また、列Qなんだから明記しては駄目ですか?再利用の予定がありますか? If Mid(Range("Q" & j), 3, 4) = "決済済み" Then なのでは? この行にカーソルを置いて、f9キー押下でブレークポイントを作っておいて f8キー押下すればStep実行できるし、Mid(Range("Q" & j), 3, 4)の値も カーソルで選択すれば確認できるので利用さなると良いと思いますよ

saiwai
質問者

補足

深夜に回答ありがとうございます。 本来の物を表示出来ない為、少々間違えて載せてしまいました…大変申し訳ありません。 Q列は再利用はないので提示していただいた文でいけそうです。 実際は「決定」までは動くのですが…問題は連結なのですがヒントが頂ければありがたいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA 4桁の文字列にするには

    お世話になっております。 相変わらず初心者です。また質問させてください。 基本的なことが原因でしたら大変申し訳ありません。 E列(添付の「番号」列)を4桁の文字列にしたくて、 下記のように組んでみたのですが、 家のPCで実行すると問題なくE列が4桁の文字列:333だったら0333 になるのですが、 友人のPCで実行すると4桁の文字列:333のとき、実行後も333のままです。 何が原因なのかまったくわからず、途方にくれています。 どうすれば無事に動くのかどなたか教えてください。 With ActiveSheet.Range("A1").CurrentRegion Dim i As Long For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row .Range("J:J").NumberFormatLocal = "@" .Cells(i, 10) = Format(.Cells(i, 5), "0000") .Cells(i, 5) = .Cells(i, 10) Next i End With

  • Excelマクロにて文字列連結

    現在Excelのマクロにて文字列の連結を行っているのですが、 繋いだ文字列を改行を付けて連結を行いたいです。 セルとセルの中の文字列を改行を付けて連結するにはどうしたらいいのでしょうか? 例 A1セル「あああ」 B1セル「いいい」 C1セル「あああ       いいい」 Worksheets(sheet1).Range("C1").Value = Worksheets(sheet1).Range("A1").Value + Worksheets(sheet1).Range("B1").Value をすると 「あああいいい」と1行で表示されてしまいます。     ↑ ここに改行を入れるにはどうしたらいいのでしょうか? 以上、宜しくお願いします。

  • 文字変換マクロについて

    数値を文字列に変換するマクロで、行数や列数が増えても対応できるようにしたいです。 (並びは…数値 スペース 文字列)どなたか教えてください。 よろしくお願いします。 Sub 文字() Dim i As Long For i = 1 To Range("A1").End(xlDown).Row Cells(i, "C") = Cells(i, "A") With Cells(i, "C") .NumberFormatLocal = "@" .Value = StrConv(Cells(i, "C").Value, vbNarrow) .Value = Format(Cells(i, "C").Value, "'00") End With Next i End Sub

  • エクセルでセルの値がTRUEかFALSEか判定

    Q3:R19の表があります。 Q列にはTRUEかFALSEが入りますが、空白や文字列の場合もあります。 R列には文字列です。 Q列でFALSEのセルだけ、同じ行のとなりのR列の文字列を順に抜き出し、メッセージボックスに表示したいのです。 下記のようなVBAを書いてみましたが、Q列が空白や文字列の場合まで抽出されてしまいます。 これを排除するいい方法はないでしょうか? Sub test01()   Dim msg As String   Dim i As Long   With Sheets("LOG")     For i = 3 To 19       If .Range("Q" & i).Value = False Then '        Debug.Print  i & "-" & .Range("R" & i).Value         msg = msg & .Range("R" & i).Value & vbCrLf       End If     Next i   End With   If msg <> "" Then     MsgBox msg & vbCrLf & "上記により不可です。", vbCritical   End If End Sub

  • excel2007マクロに関しまして

    excel2007マクロに関して不明な点があるので教えて頂きたいです。 シートが50枚ありそれぞれのシートのN列4~15行に対し そのシートのC列4~15行の値を60倍したものを記載したいのですが 下記入力内容中の Range("N " & j ).Select のところでRange メソッドの失敗が生じてしまいます。 その他にも不備があればご指摘頂きたいです。 宜しくお願いします。 Sub Macro6() ' ' Macro6 Macro ' Dim i, j As Integer For i = 1 To 50 With Sheets("ds1_" & i) Range("N3").Select ActiveCell.FormulaR1C1 = "Q(cum/m)" For j = 4 To 15 Range("N " & j ).Select ActiveCell.FormulaR1C1 = "=RC[-11]*60" Next j End With Next i End Sub

  • VBA 文字列と数値の混在

    Excel VBA 独学中の初心者です。独学中の初心者です。 データ型に関する以下の疑問についてお答えいただける方、よろしくお願い致します。 疑問1.「文字列 & 数値」でエラーにならず、結果は文字列になるようですが、これはVBAの規則上当たり前のことでしょうか。 疑問2.InputBox関数の戻り値は、Typeを省略した場合文字列と思いますが、これを数値型の変数に代入してもエラーは発生しませんでした。これも当たり前のことでしょうか。 具体例は以下です。 ------------------ Option Explicit Sub 文字列と数値の疑問() '初期設定 Cells.Clear Range("A1").Select '本題はここから Dim i As Long Dim j As Long Dim strRange As String Dim strInput As String '------------------ '疑問1の例 i = 2 strRange = "A" & i '疑問1:文字列と数値変数(長整数型)を文字列連結演算子で連結してもエラーにならない。・・・なぜ? '結果は1つの文字列→strRange ="A2" '例 Range(strRange).Select '動作OK Range(strRange) = i '動作OK '------------------ '疑問2の例 strInput = InputBox("選択行を入力してください", , "4") 'strInputは文字列型変数 j = strInput '疑問2:数値変数(長整数型変数)に文字型変数を代入してもエラーにならない・・・なぜ? '結果は長整数型変数(数値) j=4 (Input BOX をデフォルトでOKしたとき) '例:以下の両方とも動作OK '1) strRange = "A" & strInput '文字列 & 文字列 →文字列 strRange ="A4";疑問なし Range(strRange).Select '動作OK Range(strRange) = strInput '2) Cells.Clear '確認用にクリアスクリーン Range("A1").Select '確認用にセル位置移動 strRange = "A" & j '文字列 & 数値 →文字列 strRange ="A4";疑問1と同じ Range(strRange).Select '動作OK Range(strRange) = j '動作OK End Sub

  • ある文字が含まれているセルの個数を結果表示

    いつもお世話になっております。 また詰まってしまいましたので質問させてください。 S列に「test」という文字が入っているセルの個数を集計し結果を セル「AC1」に表示したいのですがうまくいかずにおります。 なお、S列には様々な文字が入っているのでワイルドカードで検索しております。 データ数は変動します。 Sub Macro1() Dim c As Long Dim ans As Integer Dim i As Integer ans = 0 With ActiveSheet For i = Cells(65536, c).End(xlUp).Row To 1 Step -1 If Range("S" & i) = "*test*" Then ans = ans + 1 End If Next i Range("AC1") = ans End With End Sub 環境 Excel2003 以上、宜しくお願いします。

  • マクロの貼付け方で御教授下さい。

    エクセル2000を使用しています。 3種類(内容は似てはいますがそれぞれ違います)のマクロのデータがメモ帳にあります。 そのマクロを記憶させたいのですが、 私がマクロを貼付ける方法は、ツール-マクロ-新しいマクロの記録 マクロの保存先(I) の保存先を、個人用マクロブック、どこかのセルを1個2個クリック。 ツール-マクロ-記録終了 Alt + F11 で、Visual Basic Editor 画面を開けて、プロジェクト・エクスプローラ VBAProject(PERSONAL.XLS)というのができているはずなのでModule1 の中にマクロを上書きで貼り付け。 とういやり方です。 その場合マクロを3つまとめて貼付けて良いのでしょうか? それとも一個ずつこの作業を三回繰り返す方が良いのでしょうか? もし方法が間違っていれば御指摘下さい。 参考までに内容は下記のような感じです。 Sub abc() Dim x As Long With ActiveSheet .Columns("C").Cut 中略 .Range("A1:J1").Interior.ColorIndex = 6 End With End Sub Sub def() Dim x As Long With ActiveSheet .Columns("C").Cut 中略 .Range(.Range("A1"), .Range("A1").End(xlToRight)).Interior.ColorIndex = 6 End With End Sub Sub ghi() Dim x As Long With ActiveSheet .Columns("C").Cut 中略 .Range(.Range("A1"), .Range("A1").End(xlToRight)).Interior.ColorIndex = 6 End With End Sub

  • ゼロを含む文字列の連結方法

    初歩的な質問かもしれませんが、お願いします。 ゼロが連続する文字列を連結させて、ひとつの文字列にしたいのですが、strcpyとstrcatの組み合わせでは、00があった時点でこの部分が抜けてしまいます。ゼロを含む完全な形で連結する方法をお願いします。 例: 文字列A:「0001」と文字列B:「0055」と文字列C:「00AA」を連結して、 文字列X:「0001005500AA」を作りたいのです。

  • 特定の文字列を除いた配列の作成マクロについて

    頭書の件、現在マクロで以下のようなことを行おうとしており悩んでおります。 皆様のお知恵を拝借いたしたく、お願いいたします。 エクセルのSheet1に以下のような形でデータが格納されております。 A行:文字列、B行:数字でそれぞれ60000個程度のデータ格納されております。 この中から、特定の文字列を含んだ列を全て削除したデータを配列に格納するマクロを作成したいと考えています。 「特定の文字列」は、例えば"山田", "佐藤", "田中"の3種類とします。 もし上述の文字列のいずれかを含んだデータが30000個あれば、削除後の30000個程度のデータを新しい配列に格納したいと思っています。 イメージ的には以下のような操作がしたいのですが、「If C(i, 1) <> List Then」では通らないので、この部分に該当するような操作をなにかしらの方法で表現できましたらご教授いただけると助かります。 Sub test() Dim C As Variant Dim D As Variant Dim i As Long Dim j As Long Dim List As Variant List = Array("山田", "佐藤", "田中") C = Worksheets("Sheet1").Range("A1", "B6000") For i = 1 To 60000 If C(i, 1) <> List Then D(j,1)=C(i,1) D(j,2)=C(i,2) j=j+1 Else End If Next End Sub お手数をおかけいたしますが、宜しくお願いいたします。