一つのセルの文字列を分解して別のシートへ

このQ&Aのポイント
  • 一つのセルの文字列を分解して別のシートの指定したセルに一文字ずつ入力する方法について教えてください。
  • 別のシートにある祝日データを使用して、一つのセルの文字列を分解し、指定したセルに一文字ずつ自動で入力する方法を知りたいです。
  • マクロを使用して、一つのセルの文字列を分解し、別のシートの祝日データを参照しながら、指定したセルに一文字ずつ自動で入力することは可能でしょうか?
回答を見る
  • ベストアンサー

一つのセルの文字列を分解して別のシートへ

いつもお世話になっております。 一つのセルの文字列を分解して別のシートの指定したセルに一文字ずつ入力したいと考えています。 (例)   A B C  D E       F ・・・・・・・・・・・    AD 1 2014/5/1 ・・・・   2014/5/6・・・・・・・・・・・2014/5/31 2 3               こ 4 5               ど 6 7               も 8                                 9               の 別シートには、祝日の一覧が作成してあり、一つのセル"こどもの日"のように入力してあります。 F1のセルが2014/5/6なので、別シートの祝日データからデータをとばして、F3のセルに"こ"、一つ飛ばしてF5のセルに"ど"、F6のセルに"も"のように自動で入力したいのですが(他の祝日も同じく)、そういったことはマクロで可能でしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >F1のセルが2014/5/6なので・・・ 「こどもの日」は5月5日でお示しの配列だとE列になり、F列は振替休日だと思います。 それはさておいて、↓の画像のようなデータをSheet2に作成しておくとします。 Sheet1の1行目にシリアル値が入っているとしてのコードです。 標準モジュールです。 Sub Sample1() Dim i As Long, j As Long, lastRow As Long, lastCol As Long Dim str As String, c As Range, wS As Worksheet Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") lastRow = .UsedRange.Rows.Count lastCol = .UsedRange.Columns.Count If lastRow > 1 Then Range(.Cells(2, 1), .Cells(lastRow, lastCol)).ClearContents End If For j = 1 To lastCol Set c = wS.Cells.Find(what:=.Cells(1, j), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then str = wS.Cells(c.Row, "A") For i = 1 To Len(str) With .Cells(2 * i + 1, j) .Value = Mid(str, i, 1) .HorizontalAlignment = xlCenter End With Next i End If Next j End With End Sub ※ 関数でないのでSheet1のデータ変更があるたびにマクロを実行する必要があります。m(_ _)m

AkB373
質問者

お礼

ご回答ありがとうございました。 無事に解決することができました!

関連するQ&A

  • Excel2007のマクロで文字列を分解

    Excel2007のマクロで文字列を分解したいのですがうまくいきません。 1、セルA1からU1までかそれ以上にデータが3つずつ入ってます。 2、1のデータの1つずつをを3列ずつに分解してA3から列上にコピー。 例えば、セルA1あいう、セルB1えおか→ならA3あ、B3い、C3う、D3え、E3お、F3か という具合に。だれかお願いします。

  • エクセル ある文字列を入れるとある文字列を返す

    エクセルでの関数、ど素人です。一応自分で調べたのですが、無理なので質問させていただきます。よろしくお願いいたします。 エクセルで、時刻ですが文字列として1745~2345までを手入力します(1745,とか2000とか2330とか。。。。。) 入れた文字列によって、すぐ横のセルに1745、1800、1815であれば8.00、1830からは0.25刻みで8.25、1845であれば8.50、1900であれば8.75。。。。2330であれば13.25、2345であれば13.50と言ったように、入力した文字列に対しある特定の文字列を自動的に入れたいのですが、どのような関数を使えばよろしいのでしょうか。 私が行おうとしたのは、別シートに文字列一覧を作り、if(特定のセル(手入力するセル)=別シートの1745~2345まで、横のセル=別シートの8.00、8.00、8.00~13.50まで)や、sumif、lookupを使ってみましたが撃沈です。 どなたか教えていただきたく、お願いいたします。

  • セルの書式が標準なのに文字列にできるのはなぜ?

    会社のシステムで吐き出したデータですが セルの書式設定が標準なのに文字列となっています。 マクロを利用して、あるセルの値を別セルへ転記すると、 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示になってしまいます。 会社のシステムが吐き出したエクセルはセルの書式が標準なのに 中の数字が文字列でいられるのが疑問です。 会社のシステムの吐き出したデータは Microsoft Excel 2.1ワークシートで 全てのセルの書式設定は「標準」です。 で例えば 12345678901234 は 12345678901234 と表示されていて 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) 0101という値のセルでも 表示は0101ですが 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) それらのセルの値をマクロとかで別セルに転記すると 転記先では1.23457E+13 と表示されてしまいます。 (0101は101になります。) まっさらなエクセルに自分で手入力すると ・セルの書式設定が標準だと 12345678901234 ↓ 1.23457E+13になります。 ・セルの書式設定が数値だと 12345678901234 ↓ 12345678901234 ・セルの書式設定が文字列だと 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) なのに会社のシステムの吐き出しデータは セルの書式設定が標準なのにもかかわらず 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) となっています。 手入力で書式設定が標準の状態でセルに12345678901234 と表示させるには先頭に ' をつける方法しか知りませんが ' が無いのに表示されています。 でもこの該当セルをマクロで別セル(書式設定:標準)に転記すると 1.23457E+13 となります。 またシステムが吐き出したエクセルの同じシート内に 以下のマクロで転記すると ↓ Sub 転記() 行 = 2 Do If Cells(行, 6).Value = "" Then Exit Do If Cells(行, 6).Value >= 10 Then Cells(行, 7).Value = Range("A2") Else Cells(行, 7).Value = Range("A3") End If 行 = 行 + 1 Loop End Sub ↓ このマクロだと A列~F列が書式設定が標準なのに文字列として表示されているのですが 転記先のG列が書式設定が標準であっても 12345678901234 (数値が文字列と保存されています と注釈有) と同じ状態のまま転記できます。 新しいBOOKのシート2に 会社の吐き出しデータをシートコピーした後、 (セルの書式設定:標準だが文字列で表示されている) そのBOOKに登録されているマクロで シート2のセルからシート1のセル(書式設定:標準)に転記すると 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示 となってしまいます。 ちょっと混乱しています。 理屈等教えていただければと思います。お願いします。

  • Excel2007のマクロで文字列を分解

    Excel2007のマクロで文字列を分解したいのですがうまくいきません。 1、セルM29からAG29までかそれ以上にデータが3つずつ入ってます。 2、1のデータの1つずつをを3列ずつに分解してM31から列上にコピー。 例えば、セルM29あいう、セルN29えおか、…、→ならM31あ、N31い、O31う、P31え、Q31お、R31か、…。 という具合に。お願いいたします 画像を添付する

  • 文字列の分解

    1つのセルに入力された文字列を分解したいのです。 例えばφ20 +0.010/+0.001と有る場合別のセルにφ20、+0.020、+0.001と分解したいのです。 =MID(C1,1,FIND(" ",C1)-1) =MID(C1,FIND(" ",C1)+1,6) =MID(C1,FIND("/",C1)+1,FIND("/",C1)) としているのですが、文字列に” ”や”/”がない場合は#VALUE!となり表示出来ませんし、+0.010の部分の桁が増減すると上手く表示が出来なく成ります。 何かいい方法は無いでしょうか?

  • 特定の文字列が入力されると、その文字列の列すべてを別のシートに抽出する

    特定の文字列が入力されると、その文字列の列すべてを別のシートに抽出する方法について お世話になります。 エクセルについてのご相談なのですが、 「シート1に入力された内容を、表の一番左の番号を元に別シートに引用したい」 というご相談です。 条件として、 ・入力される内容は複数の項目 ・入力されるデータは文字列も数値もある ・シート1は任意の項目でソートをすることもあるが、一番左の番号も同様にソートされるので、データと番号がずれることはない という前提です。 サンプル画像にイメージデータを添付致しました。 このサンプルですと、A4~A12の数字が「左端の番号」になり、別シートでは「左端の番号」を元にB~Fのデータを引用するように作成をしたいと思っています。 説明がわかりにくいかとは思いますが、ご助力頂ければ助かります。 よろしくおねがいいたします。

  • エクセルで、文字列を検索し、その文字を含んだセルの内容を別のシートに表示する。

    SHEET1のA列に文字列を含むデータがあります。 これをデータベースとして、 SHEET2のセルA1に「ある特定の文字列」を含むSHEET1のセルの内容を表示させたい場合、どのような関数を使ったら良いでしょうか。 具体的には、SHEET1に特許明細の各項目が、A1~A100くらいまであります。 各項目には、例えば、出願人、出願日、効果、請求項などの文字列が含まれます。 そこでSHEET2のA1に「請求項」と入力すると「請求項」という文字列を検索し、その文字列を含んだセルの内容を表示させたいのです。そのセルは一つとは限りません。 以上のような事は、関数で可能でしょうか。

  • 文字列を2つに分ける

    10個近くある異なるブックのシートを、新しい1つのブックにまとめてしまおうと考えています。 手動で1つのブック内の複数シートを選択して、新しいブックにコピーしようとしましたが、1つのセルに入力されている文字列の中に、かなり長い(255字以上)ものが含まれており、コピーした際にデータが捨てられてしまいます。 長い文字列を、事前にマクロで探して、2つのセルに分ける (たとえば、A1に長い文章があるなら、A2にセルを挿入して、文字列を2つにわける) ことは可能でしょうか? 分けたあとにそれぞれが255字以下になっていることも確認したいと思っています

  • 各セルを1列に並べたい

    エクセル2000の質問です。 A1:C10のシートの各セルに文字データがばらばらに入っています。空白のセルもあります。これを1列に並び替えしたいのです。 たとえば あ,い,う,え,お, か,き,く,け,こ, を あ い う え お か き く け こ というように。結構大量に散らばっているので手間をかけずにできるとありがたいです。 よろしくお願いします。

  • 別シートの文字列があったら現シートのセルの色変える

    こんにちは。 エクセル2010を使用しています。質問させて下さい。 BシートのA列に下記のような文字列があります。 ------以下文字列------- 秋山 清原 デストラーデ 渡辺 ------以上文字列------- この時、AシートのセルにBシートに現れる文字列があった場合に色づけがしたいです。 例えば、Aシートに”清原”というセルがあったら、Bシートを参照して色づけされる。 この様なことをどうすれば実現できますでしょうか? ご教示願います。

専門家に質問してみよう