- ベストアンサー
VBAでセルの文字列を移動させるプログラム
- VBAを使ってセルの文字列を移動させるプログラムを作成する方法について教えてください。
- エクセルシートには英単語が入っているセルとその下に和訳が入っているセルがあります。
- 空欄を目印にして、セルの文字列を移動させるVBAプログラムを作成する方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 >英単語のしたに英語で当該単語の解説がある場合は・・・ となると結局「空白セル」で判断するしかないようですね。 Sub Sample2() Dim i As Long, k As Long For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row If Cells(i, "A") <> "" Then k = i + 1 Do While Cells(k, "A") <> "" Cells(k, "A").Cut Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) k = k + 1 Loop i = k End If Next i End Sub 今度はどうでしょうか?m(_ _)m
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >よってこの空欄を目印にして・・・ 空白を「目印」ではなく、バイト数で判断してみました。 「英単語」→すべて半角文字のはずなので文字数とバイト数が同じ数になる 「和訳」→全角1文字は2バイトとなるので文字数とバイト数は異なる を利用した方法の一例です。 Sub Sample1() Dim i As Long, k As Long For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row '▼文字数とバイト数が同じ場合は、単語を判断 If Len(Cells(i, "A")) = LenB(StrConv(Cells(i, "A"), vbFromUnicode)) Then k = i + 1 '▼文字数とバイト数が異なるセルをi行の右隣りのセルはカット&コピー Do While Len(Cells(k, "A")) <> LenB(StrConv(Cells(k, "A"), vbFromUnicode)) Cells(k, "A").Cut Cells(i, Columns.Count).End(xlToLeft).Offset(, 1) k = k + 1 Loop i = k End If Next i ActiveSheet.Columns.AutoFit End Sub こんな感じではどうでしょうか?m(_ _)m
お礼
お世話になっております。 早速のご回答を下さりありがとうございます! 非常に助かりました。 さらに教えていただけるととてもありがたいのですが、今回のケースのような場合で、英英辞典のように、英単語のしたに英語で当該単語の解説がある場合はどのようにすればよいかもご教授願えませんでしょうか。 質問に挙げた例は英和辞典のようなケースのデータであったのですが、実は英英辞典のようなケースのデータも処理がしたく、もしも処理をすることができればさらにありがたい限りです。 もしもご存知でしたらどうかよろしくお願いいたします。
お礼
tomo04さん お世話になっております。 完璧に動作いたしました。 この度はご丁寧に教えていただきありがとうございました。 本当に助かりました!