• 締切済み

ExcelシートからA,B,C,D,Eといったようにコンマ区切りで 抜き出したい

ExcelVBAに関するマクロについて教えてください。 A|B|C|D|E|○ -+-+-+-+-+-- F|G|H|I|J|× -+-+-+-+-+-- K|L|M|N|O|○ というExcelがあったときに 1行6列目のように○があれば、 A,B,C,D,Eといったようにコンマ区切りで 抜き出したいですが、マクロの組みかたが 分かりません。 ×のときは、無視し、3行目は○なので 改行した上で再び一行抜きたいです。 親切な方教えてください。 ヒントだけでもかまいません。 よろしくお願いします。

みんなの回答

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

>さらに追加で、2列目の値はjoinさせない(出力させない)としたら >どのようにすれば良いでしょうか? こんな方法も v = Cells(i, 2).Resize(, 4).Value v(1, 1) = Cells(i, 1).Value MsgBox Join(Application.Index(v, 1, 0), ",")

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>さらに追加で、2列目の値はjoinさせない(出力させない)としたら >どのようにすれば良いでしょうか? v = Cells(i, 3).Resize(, 3).Value MsgBox Cells(i, 1).Value & "," & Join(Application.Index(v, 1, 0), ",")

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

こんにちは、参考に Sub Test()   Dim i As Long   Dim v As Variant   For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row     If Cells(i, "F").Value = "○" Then       v = Cells(i, 1).Resize(, 5).Value       MsgBox Join(Application.Index(v, 1, 0), ",")     End If   Next End Sub

yktaka
質問者

補足

ありがとうございます!参考になりました! さらに追加で、2列目の値はjoinさせない(出力させない)としたら、どのようにすれば良いでしょうか? v = Cells(i,1).Value & Cells(i,3).Resize(,3),value とすればいけるのかなと思ったのですが、 実行時エラー13と出てきてうまくいきませんでした。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

よく分かりません 出力先、1、3、5行目が○の時、1、2、3行に出力するのか、1、3、5行に出力するのか Sub test() Dim i As Integer, x As Long Dim strText As String For i = 1 To Range("f65536").End(xlUp).Row If Cells(i, 6).Value = "○" Then For x = 0 To 4 strText = IIf(x = 0, Cells(i, 1).Value, strText & "," & Cells(i, 1).Offset(, x).Value) Next x MsgBox strText End If Next i End Sub 後はご自由に 以上、参考まで

回答No.1

出力先はどこなのでしょう? (1)A-F列を選択し、6列目で降順に並べ替え。これで「○」の行が上に集まる。 (2)G列(7列目)の「○」のある行に以下の式をフィル。 =CONCATENATE(A1,",",B1,",",C1,",",D1,",",E1) (3)もしファイルに保存するなら、G列をコピーしてテキストファイルに貼り付け。 という手作業で十分に思いますが、必要ならこれをマクロ記録して修正してみては。

関連するQ&A

  • エクセルでカンマ区切り文字を各行に分解するマクロを書きたい

    WindowsXP Excel2003 エクセルで以下ができるマクロを書きたいです。 B列にはカンマ区切りで文字列が入っています。 カンマ区切りの数は行によって様々です。 この表をB列のカンマ区切り文字を各行に分解したいです。 その際、A列とC列は分解前の値と同様です。 このようなマクロは書けますかね? A列     B列     C列 あ     a,b,c    100 い     d,e     200 う     f      300 え     g,h     400     ↓ A列     B列     C列 あ     a      100 あ     b      100 あ     c      100 い     d      200 い     e      200 う     f      300 え     g      400 え     h      400

  • 行にある文字をカンマ区切りでひとつのセルに

    エクセルで次のようなデータがあります "a","b","c","d" "1","","3","4" "1","2","","4" "","2","3","4" このデータに対して 2行目から4行目のe列に その行に入っている数字をカンマ区切りで表示させたい 下記のイメージです "a","b","c","d","e" "1","","3","4","1,3,4" "1","2","","4","1,2,4" "","2","3","","2,3" ダブルコーテーションマーク"はついていませんが 質問時、表が崩れるのでこれをつけさせてもらいました 上記のイメージですがデータ的には 900行、50列ほどあります 関数かVBAでやれる方法を教えていただきたいのですが・・・ 関数・VBAについては昔やったことがある程度です 時間をかけて何かをみながら・・・やれる程度のものです ヒント等いただければ幸いです

  • n=a&&b==c<d<<eの計算方法

    n=a&&b==c<d<<eの計算方法のうち d<<e の部分がわかりません。教科書の設定は a=3 b=4 c=5 d=6 e=2 で答えは n=0 になっています。説明はビット単位の左シフトと書いているのですが具体的にはどういった計算方法になるのか教えてください。

  • エクセルのCSV(カンマ区切り)保存について教えてください

    次のようなEXCELデータをCSV(カンマ区切り)で保存した際に項目(カンマ)を2つ追加できるでしょうか? EXCEL  セルA1:AAA  セルB1:BBB  セルC1:  セルD1:CCC  セルE1:  セルF1: このデータをCSV保存してTEXTで確認すると、  AAA,BBB,,CCC となりますが、これを  AAA,BBB,,CCC,, としたいのですが、セルE1とセルF1がNULLのためカンマ区切りができません。半角スペースなどをいれるしかないのでしょうか? できればセルE1とセルF1には何も入力したくないのですが。良い方法がありましたら教えてください。

  • A=B(1+((3C+2D)÷6(E^2÷B)))

    A=B(1+((3C+2D)÷6(E^2÷B)))ですが、これのBを求める場合の変形式が解らなく困っております。どなたかおたすけ下さい。

  • エクセルの【区切りの位置】の活用について

    【結論】列に配置したい。 エクセル 2010使用です。 1セルにカンマで区切った文字列があります。 (例)A1のセル内に【みかん,りんご,いちご,なし】 区切りの位置でカンマ.........で行うと A1みかん B1りんご C1いちご D1なし になります。 行ではなく列にしたいです。 A1みかん B1りんご C1いちご D1なし いま私が行っているのは、行を一度コピーして 貼り付けのオプションで行と列を入れ替えてます。 最初から1セルに1文字列がよいのですが 他人が1セルにカンマで区切ったデータを編集します。 エクセル2010での関数や操作で実施したい。 ただしマクロや、外部からのソフトは使用しないで よろしくお願いします。 ※OKWaveより補足:「ひかりTVのサービスやISPぷらら」についての質問です。

  • A、B、C、D、Eのどの人が一番真ん中に座ってる?

    ChatGPTに「なんか問題出して」と言ったところ、以下の問題が出てきました。 A、B、C、D、Eの5人が隣り合って座っています。CはAの隣に座り、BはDの隣に座っています。どの人が一番真ん中に座っているでしょうか? ・・・? これって答えが一意に決まらないですよね? 一つ目は、C-Aでもいいですし、A-Cでもいいですよね? 二つ目は、B-Dでもいいですし、D-Bでもいいですよね? そうなると、どのアルファベットでも真ん中にすることができますよね? C-A-E-B-D E-C-A-B-D E-A-C-B-D E-B-D-C-A E-D-B-C-A ・・・何か間違っていますか? この問題だと、「CはAの「右」隣に座り・・・」などと細かく指定しても、まだ一意に決まりそうにないですよね。 以下に、ChatGPTとBingChatの解答を添えました。 ChatGPTもBingChatも間違った解答を示すことがよくあると知っていますが、これらの解答にもまったく納得いっていません。 第三者の意見が訊きたいです。 ■ChatGPTの解答■ 与えられた情報から、CはAの隣に座っているということが分かります。また、BはDの隣に座っています。したがって、座席の順番は次のようになります: A - C - B - D - E この座席の配置において、CがAの隣に座っているため、CはAと隣り合っています。従って、Cが一番真ん中に座っていることになります。 (私談:自分でA - C - B - D - Eと書いておいて「Cが一番真ん中」ですか・・・) ■BingChatの解答■ この問題は、論理的に考えると簡単に解けます。まず、CはAの隣に座っているので、Cは端には座っていません。同様に、BはDの隣に座っているので、Bも端には座っていません。したがって、端に座っているのはAとEのどちらかです。次に、AとEのどちらが端に座っているかを考えます。もしAが端に座っているとすると、CはAの隣に座っているので、CはAの反対側の端から2番目に座っています。しかし、この場合、BはDの隣に座っているという条件を満たせません。なぜなら、BはCの反対側の端から2番目に座らなければならず、その場合Dは端から3番目に座らなければならないからです。これは5人しかいないという前提に反します。よって、Aが端に座っているという仮定は間違っています。したがって、Eが端に座っているということになります。Eが端に座っているとすると、CはEの反対側の端から2番目に座り、BはDの隣に座ります。この場合、一番真ん中に座るのはDです。答えはDです。

  • 自然数a,bに対し、c=4a+7b , d=3a+4b と定める。aと

    自然数a,bに対し、c=4a+7b , d=3a+4b と定める。aとbが互いに素で、。cとdがどちらも素数pの倍数であるとき、pを求めよ。 全く方針が分かりません。ヒント及び解法を教えていただきたいです。よろしくお願いします。

  • (a+b+c+d+e+・・・n)^2=?

    (a+b)^2=a^2+2ab+b^2ですよね。 (a+b+c)^2=? (a+b+c+d)^2=? (a+b+c+d+e)^2=? ・ ・ ・ (a1+a2+a3+a4+~an)^2=はどんな式?法則とかあるんですか? 説明が下手ですけど

  • エクセル 区切り位置で改行

    このようなテキストデータがあるとします A-15/3 B-1/25 C-305/20 D-15/15 E-4800/4500 このテキストデータをエクセル上で処理するときに A 15 3 B 1 25 C 305 20 D 15 15 E 4800 4500 (スペースはそれぞれ1セルの単位) のように処理したいと考えています。 ・特定の場所で改行をはさみながら処理していきたい ・複数の特殊な区切り文字を処理したい 何かいい方法はないでしょうか。ご意見よろしくお願いします。