- ベストアンサー
Excel-VBA セルのデータ書出し
セル「A1」に次のデータが在るとします。 セルの書式設定は「折り返して全体を表示する」です。 金田 曽我部 武田 安藤 森田 ▼やりたい事は、 セル[A1]のデータを、一名ずつに分解して⇒セル[B1・B2・B3・B4・B5・・・]へ VBAで書き出したいのですが初心者にてコードが分かりません。 サンプルコードを紹介していただきたいのですが、 よろしくお願い致します。
- sakuraww
- お礼率57% (37/64)
- Visual Basic
- 回答数5
- ありがとう数3
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 名前は改行(Alt+Enter)している事としています。 a = Split(Cells(1, 1), vbLf) For i = LBound(a) To UBound(a) Cells(i + 1, 2) = a(i) Next
その他の回答 (4)
- end-u
- ベストアンサー率79% (496/625)
>課題の説明不足があったかもしれませんが、 >実際は複数のセルの値をB列配下へ次々と下記加える運用となる事から... その場合もちょっとした応用のみ。 件数を取得する必要もありません。 Sub test2() 'A列のデータ範囲を選択して実行 Dim s As String Selection.Copy With New DataObject .GetFromClipboard s = .GetText .Clear .SetText Replace$(s, """", "") .PutInClipboard End With ActiveSheet.Paste Range("B1") End Sub
お礼
end-uさん、ご丁寧な回答有難うございます。 締め切り後の回答にてQ&Aが出来なくなりました。 新たに「Excel-VBA セルのデータ書出し(Q2)」で質問しなおします。 ご教授宜しくお願い致します。
- end-u
- ベストアンサー率79% (496/625)
Sub test() With New DataObject .Clear .SetText Range("A1").Value .PutInClipboard End With ActiveSheet.Paste Range("B1") End Sub 上記コードを標準モジュールに書いて VBEメニュー[ツール]-[参照設定]の「参照可能なライブラリファイル」に Microsoft Forms 2.0 Object Library をチェックして追加します。 (UserFormを追加する事でも参照追加されます) その後、コード実行。 手作業では、セルまるごとコピーするのではなく A1セル編集状態で文字列だけコピー(数式バーの内容だけコピー)し B1セルにペースト。 ..と同じような意味のコードです。
補足
end-uさん回答有難うございます。 思いもよらない手法をご教授いただき感謝しています。 課題の説明不足があったかもしれませんが、 実際は複数のセルの値をB列配下へ次々と下記加える運用となる事から、 ご教授いただいた「PutInClipboard」等は件数を取得できないように思え、 今回は運用を見合わせました。 しかし必ず使用する機会が有ろうかと思います。 貴重な手法として留めおかさせていただきます。 以上
- imogasi
- ベストアンサー率27% (4737/17068)
既に回答があるように、わたしも普通は、Split関数を使う。 それには (1)Split関数の存在とどういう機能か (2)セル内改行が(文字コード10) Chr(10) で成り立っていること (3)その他 を知っていることが必要です。 -- Split以外の回答を挙げておく。Instr 関数利用の繰り返し。1セル10氏名までと仮定。 同列に多数セルある場合は下記のk=1を除いて(各セルの繰返しの外に出して)全体を繰り返しする。 ーーー Sub test01() k = 1 'B列の第1行目からに結果を出す x = Cells(1, "A") s = 1 For i = 1 To 10 p = InStr(s, x, Chr(10)) If p = 0 Then Exit For Cells(k, "B") = Mid(x, s, p - s) k = k + 1 s = p + 1 Next i End Sub
補足
回答有難うございました。 InStr関数について良く理解できました。 しかし最後の値が出力できませんでしたが、次の様に加筆する事で成功しました。 x = Cells(1, "A") ↓ x = Cells(1, "A") & Chr(10) それと、現実は1セル10氏名と固定できないため、実運用を見合しました。 以上
- okormazd
- ベストアンサー率50% (1224/2412)
区切りが何なのか解らないが、1.はchr(10)で改行している場合(" "でも動くか)、2.は" "が区切りの場合です。 たとえば、 1. A1形式 C1:F1を使っていないなら、「区切り位置」を利用して下記のように。 Sub test1() Range("A1").TextToColumns Destination:=Range("B1"), OtherChar:=Chr(10) Range("C1:F1").Copy Range("B2").PasteSpecial Transpose:=True Range("C1:F1").ClearContents End Sub 2. R1C1形式 ふつうにVBAならたとえば下記のように。 Sub test2() s = ActiveSheet.Cells(1, 1) l = Len(s) k = 1 i = 1 While i < l j = InStr(i, s, " ") If j = 0 Then j = l + 1 ActiveSheet.Cells(k, 2) = Mid(s, i, j - i) i = j + 1 k = k + 1 Wend End Sub
補足
目的の結果が得られませんでした。
関連するQ&A
- Excel-VBA セルのデータ書出し(Q2)
セル[A1:G5]に次の様なデータが適当に在るとします。 各セル内のデータ数は様々で空のセルも在ります。 セルの書式設定は「折り返して全体を表示する」です。 '---------- 中国 '---------- 鳥取県 ←各データは[Alt]+[Enter]で改行。 島根県 '---------- 岡山県 広島県 山口県 '---------- ▼やりたい事は、セル[A1:G5]のデータを、 セル[A11]直下へ次々と書き出したいのですが、 選択範囲が、 [A1:A5]とか[B1:B5]…は上手く張り付きますが、 [A1:G1]とか[A1:G5]…は上手く張り付きません!? ご教授宜しくお願い致します。 '--------------------------- Sub test22() '行列のデータ範囲を選択して実行 Dim s As String Selection.Copy With New DataObject .GetFromClipboard s = .GetText .Clear .SetText Replace$(s, """", "") .PutInClipboard End With ActiveSheet.Paste Range("A11") End Sub '--------------------------- 以上
- ベストアンサー
- Visual Basic
- 【VBA】条件を満たしたセルを塗り潰し
VBAで下記のようにしたいのですが、どのようにすれば良いでしょうか? A 1 100 2 110 3 120 4 130 5 140 6 150 7 160 8 170 9 180 【条件】この場合、A1:A9の範囲内でB1の値を超える値が入力されているセルを黄色で塗りつぶす ※前提として、B1に150と入力されているとします 上記のようなVBAを作成したいと思っています。 この場合、塗りつぶしの対象となるセルはA7,A8,A9となります。 条件付き書式で対応できるのですが、Excel2007で作成したファイルをExcel2003で開くと条件付き書式が反映しませんでしたので、VBAで対応しようと思いました。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCEL2003 重複データに色を付けるVBA
A列のA2からA21に氏名、B列のB2からB21に住所が入力済です。A列で重複しているデータに色をつけて、さらに並び替えをしたいと思います。色は黄色、並び替えの設定は黄色で色を付けたセルがA2から順に表示するVBAを教えていただけませんでしょうか。またお手数でも列をB列、C列に変更した場合についても教えていただけませんでしょうか。VBAコードの貼り付けはできます。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA 飛び飛びのセルを選択するには
B1からB5のセルの範囲のどこかに○という文字が あるとします。もし、B2とB4に○があったらその隣の A2とA4のセルを選択してコピーしたいのです。 このような場合どのようなVBAのコードを書けばいいのでしょうか? お分かりの方よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでセル選択
エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!
- ベストアンサー
- オフィス系ソフト
- Excel2000のVBAについて教えてください
はじめまして。 現在、以下のような表があるとき、コードCがブレイクするごとに、データBに対する絶対値の最大値を求めるVBAを作成しようと思っています。 また、求めた絶対値の最大値を持つデータを抽出して、各コードCに対する最大値のみのデータを別シートに貼り付けたいとも思っています。 同一コードC内に絶対値の最大値が複数存在することもあります。 データ件数は処理ごとに変更がありますので未定です。 なお、Microsoft Queryはインストールされていません。 以上の条件でどのようなコードを作成すれば良いのか教えていただければ幸いです。 例として下記のような表1のデータを、表2のように変更したいと考えています。 よろしくお願いいたします。 表1 コードA コードB コードC データA データB データC 48 01 22 -179.4 2.402 3.864 48 20 22 -248.3 4.102 3.826 49 06 22 0.1031 -2.02 3.986 49 07 22 -153.9 1.773 3.902 50 01 22 -179.4 2.402 3.872 50 07 22 -153.9 1.773 3.886 51 08 21 -6.386 0.069 2.622 51 09 21 -74.24 0.073 2.538 52 09 21 -74.24 0.073 2.522 52 12 21 -85.48 0.084 2.508 53 10 20 0.2928 2.427 5.986 53 11 20 -198.4 -1.14 5.903 54 11 20 -198.4 -1.14 5.886 54 13 20 -231.3 -1.73 5.872 55 12 21 -85.48 0.084 2.499 55 26 21 -115.8 0.114 2.462 56 13 20 -231.3 -1.73 5.864 56 22 20 -320.2 -3.32 5.826 表2 コードA コードB コードC データA データB データC 56 22 20 -320.2 -3.32 5.826←コードCが20のグループでデータBが絶対値の最大値を持つデータ 55 26 21 -115.8 0.114 2.462←コードCが21のグループでデータBが絶対値の最大値を持つデータ 48 20 22 -248.3 4.102 3.826←コードCが22のグループでデータBが絶対値の最大値を持つデータ
- 締切済み
- オフィス系ソフト
- 空白セルと行に色をつけるVBA Excel2010
VBAの超初心者です。 条件が一致した時に、セルの背景を黄色にしたいのですが、VBAで教えて下さいませんか? D1が空白セルの場合には、C1のみを黄色。 D1とB1の両方が空白の場合は、A1からC1を黄色にしたいのです。 尚、行はどんどん増えて行く予定です。 「条件付き書式」では考えておりません。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- 【Excel VBA】結合セルのデータ削除
Excel2003を使用しています。 1~1300行までのデータの中の、ある一定の範囲と間隔でデータを削除するためのコードを書きたいのですが、セルが結合されているため、うまく処理できません。 一定の範囲と間隔とは、 B7:O26、B33:O52、B59:O78、B85:O104…B1281:O1300 です。 このひとつの範囲が1ページ分のデータで、全50ページあり、範囲内のセルは全て2行1列で結合されています。 上記のような場合は、どのようにコードを書いたらいいでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- excel2000 セル内のデータの表示について
すべてのセルにデータが「入力済みか、未入力か」一目でわかるように、セルの大きさに収まる分だけしかデータを表示しないようにするにはどうしたらよいのでしょうか。 また、多めの文字を入力すると、その分だけセルが伸びてセルの大きさが大きくなってしまいます。セルの書式設定で「折り返して全体を表示する」のチェックをはずしても、マウスポインタを動かした拍子に元に戻ってしまいます。固定する方法はありますか? わかりづらい文章で恐れ入りますが、良い方法があったら教えてください。
- 締切済み
- オフィス系ソフト
- VBAでセルに色付けは?
教えてください エクセルの条件付き書式では下記の 事ができません。 VBAでセルに色をつける 方法を教えて欲しいのですが。 例 セルA1 に 10 セルB1 に 入れた数字が 10以下なら 青 11から20なら 赤 21から25なら 黄 26以上なら ピンク と言う感じで B1 のセルに その数字と色を表示したいのですが 最終的には8色表示にしたいです。 よろしくお願いします WINXP EXCLは2002です
- ベストアンサー
- オフィス系ソフト
お礼
mu2011さん回答有難うございます。 実を言いますと「ANo.4」回答とどちらを使用するか迷いましたが、 「ANo.3 Split」を採択しました。 理由は、複数のセルの値を、B列配下へ書き出すことになる事から、データカウントが必須となります。等々からご教授いただいた手法を実運用したいと思います。 以上